Мы хотим, чтобы ВСЕ сайты на нашем веб-сервере (IIS 10) применяли SSL (т.е. перенаправляли HTTP на HTTPS).
В настоящее время мы «требуем SSL» на каждом сайте и настраиваем 403 error
обработчик для выполнения 302 redirect
на https-адрес этого конкретного сайта.
Это прекрасно работает. Но это мучительно для каждого сайта, есть много места для человеческой ошибки.
В идеале я бы хотел создать постоянный 301 redirect
на все HTTP://*
к HTTPS://*
Есть ли простой способ сделать это в IIS?
Модуль 2.1 перезаписи URL-адресов IIS для IIS7 + может быть вашим другом. Модуль можно скачать с Перезапись URL-адреса IIS. Использование модуля перезаписи URL и Справочник по настройке модуля перезаписи URL 2.0 объясните, как пользоваться модулем.
После установки модуля вы можете создать перенаправление для всего хоста с помощью диспетчера IIS. Выбрать Перезапись URL, Добавить правило (я) ..., и Пустое правило.
Название:
Перенаправление на HTTPS
Соответствующий URL
Запрошенный URL: Matches the Pattern
С помощью: Wildcards
Шаблон: *
Игнорировать регистр: Проверено
Условия
Логическая группировка: Match Any
Ввод условий: {HTTPS}
Проверьте, есть ли строка ввода: Matches the Pattern
Шаблон: OFF
Игнорировать регистр: Проверено
Отслеживайте группы захвата в разных условиях: Не проверено
Переменные сервера
Оставьте поле пустым.
Действие
Тип действия: Redirect
URL перенаправления: https://{HTTP_HOST}{REQUEST_URI}
Добавить строку запроса: Не проверено
Тип перенаправления: Permanent (301)
Примените правило и запустите IISReset (или нажмите Restart в диспетчере 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>