IIS 7.5 URL Redirect для определенных шаблонов

Когда пользователь входит в domain.com, он должен перенаправить на мое приложение, которое является https://www.domain.com/. В настоящее время этого не происходит, и отображается страница "Это соединение не заслуживает доверия".

У меня есть следующий тег перезаписи, добавленный в мой web.config:

        <rewrite>
           <rules>
            <rule name="Redirect to HTTPS" stopProcessing="true">
                <match url="(.*)" />
                <conditions>
                    <add input="{HTTPS}" pattern="^OFF$" />
                </conditions>
                <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="SeeOther" />
            </rule>
       </rules>
    </rewrite>

В настоящее время в моем IIS 7.5 я добавил входящее правило, настройки которого у меня следующие:

  1. В совпадении URL

    Запрашиваемый URL: соответствует шаблону

    Использование: Reqular Expression

    Шаблон: (.*)

    Игнорировать случай: проверено

  2. условия

    Логическая группировка: соответствовать всем

    Вход: {HTTPS}

    Тип: соответствует шаблону

    Pattern: ^OFF$

    Отслеживание группы по условию: не проверено

  3. действие

    Тип действия: Перенаправление

    URL перенаправления: https://{HTTP_HOST}/{R:1}

    Добавить строку запроса: проверено

    Тип перенаправления: см. Другое (303)

Пожалуйста, дайте мне знать, если какие-либо изменения могут быть внесены в существующие настройки.

Заранее спасибо.

1 ответ

Ваше правило перезаписи просто перенаправляет на тот же домен. Так что если пользователь вводит просто domain.com (по умолчанию http) он будет перенаправлен на https://domain.com, Если ваш SSL-сертификат не содержит domain.com но только www.domain.com это заставит браузер выдавать предупреждение о неправильном сертификате. Хотя большинство центров сертификации в настоящее время выдают сертификаты как с доменом, так и без www (но, возможно, у вас нет).

Если вы хотите, чтобы пользователь всегда использовал https://www.domain.com (всегда с www) вы должны использовать следующее правило переписывания:

<rule name="Force HTTPS" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
        <add input="{HTTPS}" negate="true" pattern="^ON$" />
        <add input="{HTTP_HOST}" negate="true" pattern="^www\.domain\.com$" />
    </conditions>
    <action type="Redirect" url="https://www.domain.com{REQUEST_URI}" appendQueryString="false" redirectType="Permanent" />
</rule>

Это заставит SSL и заставит www.domain.com в качестве заголовка хоста. Если это не так, он выдаст постоянное перенаправление (= beter) на тот же URL.

Другие вопросы по тегам