Лучший способ перенаправить всех HTTP на HTTPS в IIS

Мы хотим, чтобы ВСЕ сайты на нашем веб-сервере (IIS 10) применяли SSL (т.е. перенаправляли HTTP на HTTPS) .

В настоящее время мы «Требуем SSL». на каждом сайте и настроить обработчик 403 ошибки для выполнения 302 перенаправления на https-адрес для этого конкретного сайта.

Это отлично работает. Но это сложно сделать для каждого сайта, есть много места для человеческой ошибки.

В идеале я бы хотел настроить постоянное 301 редирект для всех HTTP: // * до HTTPS: // *

Есть ли простой способ сделать это в IIS?

25
задан 24 January 2018 в 12:02
2 ответа

Модуль 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>
39
ответ дан 28 November 2019 в 20:12

Мои исследования показывают, что это может быть лучший способ перенаправления:

<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>
1
ответ дан 28 November 2019 в 20:12

Теги

Похожие вопросы