Мы хотим, чтобы ВСЕ сайты на нашем веб-сервере (IIS 10) применяли SSL (т.е. перенаправляли HTTP на HTTPS) .
В настоящее время мы «Требуем SSL». на каждом сайте и настроить обработчик 403 ошибки
для выполнения 302 перенаправления
на https-адрес для этого конкретного сайта.
Это отлично работает. Но это сложно сделать для каждого сайта, есть много места для человеческой ошибки.
В идеале я бы хотел настроить постоянное 301 редирект
для всех HTTP: // *
до HTTPS: // *
Есть ли простой способ сделать это в IIS?
Модуль 2.1 перезаписи URL-адресов IIS для IIS7 + может быть вашим другом. Модуль можно загрузить из IIS URL Rewrite . Использование модуля перезаписи URL и Ссылка на конфигурацию модуля перезаписи URL 2.0 объясняет, как использовать модуль.
После установки модуля вы можете создать перенаправление для всего хоста с помощью диспетчера IIS . Выберите Перезапись URL , Добавить правила ... и Пустое правило .
Имя:
Перенаправить на HTTPS
Соответствие URL
Запрошенный URL: Соответствует шаблону
Использование: Подстановочные знаки
Шаблон: *
Игнорировать регистр: Проверено
Условия
Логическая группировка : Соответствует любому
Входное условие : {HTTPS}
Проверить, соответствует ли входная строка: шаблону
Шаблон: ВЫКЛ
Игнорировать регистр: Проверено
Отслеживать группы захвата по условиям: Не проверено
Переменные сервера
Оставить пустым.
Действие
Тип действия: Перенаправление
URL-адрес перенаправления: https: // {HTTP_HOST} {REQUEST_URI}
Добавить строку запроса: Не проверено
Тип перенаправления: Постоянно (301)
Примените правило и запустите IISReset (или нажмите «Перезагрузить» в диспетчере IIS)
В качестве альтернативы, после установки модуля вы можете изменить файл applicationHost.config следующим образом:
<system.webServer>
<rewrite>
<globalRules>
<rule name="Redirect to HTTPS" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
<match url="*" ignoreCase="true" negate="false" />
<conditions logicalGrouping="MatchAny" trackAllCaptures="false">
<add input="{HTTPS}" ignoreCase="true" matchType="Pattern" negate="false" pattern="OFF" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>
</globalRules>
</rewrite>
</system.webServer>
Мои исследования показывают, что это может быть лучший способ перенаправления:
<rewrite>
<rules>
<rule name="http to https" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" />
</rule>
</rules>
</rewrite>