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

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

В настоящее время мы запрашиваем SSL на каждом сайте и настраиваем 403 error обработчик для выполнения 302 redirect на адрес https для этого конкретного сайта.

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

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

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

2 ответа

Решение

Модуль перезаписи URL IIS для IIS7+ может быть вашим другом. Модуль можно скачать здесь: https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-the-url-rewrite-module

После установки вы можете создать перенаправление на хост. После установки модуля в диспетчере IIS появится приложение для перезаписи URL. Нажмите на это, а затем Добавить правило (правила)... и выберите Пустое правило.

Соответствующий URL
Запрошенный URL: Matches the Pattern
С помощью: Wildcards
Шаблон: * а также Ignore case

условия
Логическая группировка: Match Any
Вход: {HTTPS}
Тип: Matches the Pattern
Шаблон: off

Переменные сервера
Оставить пустым.

действие
Тип действия: Redirect
URL перенаправления: https://{HTTP_HOST}{REQUEST_URI}
Добавить строку запроса: провереноТип перенаправления: Permanent (301)

Примените правило и запустите IISReset (или нажмите "Перезагрузить" в диспетчере IIS).

В качестве альтернативы, после установки модуля вы можете изменить web.config следующим образом:

<rewrite>
    <rules>
        <rule name="Redirect to https" enabled="true" patternSyntax="Wildcard" stopProcessing="true">
            <match url="*" negate="false" />
            <conditions logicalGrouping="MatchAny">
                <add input="{HTTPS}" pattern="off" />
            </conditions>
            <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" />
        </rule>
    </rules>
</rewrite>

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

<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>
Другие вопросы по тегам