2016-12-07 9 views
1

Это правило работает нормально, но когда я перехожу на https://www.example.com, он не удаляет www.Перенаправление и удаление www и добавление https

Однако, если я иду на http://www.example.com, он работает должным образом.

Почему это не перенаправление с https?

<rewrite> 
    <rules> 
    <rule name="Remove WWW" stopProcessing="true"> 
     <match url="^(.*)$"/> 
     <conditions> 
     <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$"/> 
     </conditions> 
     <action type="Redirect" url="https://example.com{PATH_INFO}" redirectType="Permanent"/> 
    </rule> 
    </rules> 
</rewrite> 
+0

Это правило действительно сработало для меня. Вы уверены, что оба URL-адреса HTTP и HTTPS привязаны к одному и тому же веб-сайту? Возможно, вам придется добавить это правило на сайт HTTPS, если они отличаются. – dana

ответ

1

В моем комментарии выше ваше правило действительно сработало для меня в описанном вами сценарии. Однако я не думаю, что он обрабатывает случай, когда запрос делается на небезопасный URL-адрес, который не содержит www в имени хоста. Например, http://example.com/blah/ не будет перенаправлен. Следующее правило ниже обрабатывает этот случай, а также:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="Remove WWW and Ensure HTTPS" stopProcessing="true"> 
        <match url="(.*)" /> 
        <conditions logicalGrouping="MatchAny"> 
         <add input="{HTTP_HOST}" pattern="^(www\.)" /> 
         <add input="{HTTPS}" pattern="^OFF$" /> 
        </conditions> 
        <action type="Redirect" url="https://example.com{REQUEST_URI}" redirectType="Permanent" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

В правилах проверки для имени хоста, начиная с www или незащищенным запросом. Если выполняется любое условие, пользователь перенаправляется.

+0

Итак, похоже, что аутентификация сертификации происходит раньше, чем перенаправление, поэтому субдомен www не включен в сертификат. Поэтому я получаю предупреждение о сертификате до того, как произойдет перенаправление, и похоже, что я ничего не могу с этим поделать. – prospector

+0

Интересно ... SSL-сертификаты, которые я использовал, обычно включают в себя субдомен www. – dana

+0

Да, как правило, это так, проблема в том, что это был многодоменный сертификат, видимо, это не та ситуация с ними. – prospector