Перезапись IIS7 URL: Как не отбросить протокол HTTPS от переписанного URL?

Я работаю над веб-сайтом, который использует IIS 7 функция перезаписи URL, чтобы сделать постоянное перенаправление от example.com до www.example.com, а также переписывает от подобных доменных имен до "основного", такой как от www.examples.com до www.example.com.

Это переписывает правило - показанный ниже - работал хорошо в течение некоторого времени теперь. Однако мы недавно добавили поддержку HTTPS и заметили, что, если пользователи посещают один из URL, которые будут переписаны на www.example.com затем, HTTPS отбрасывается. Например, если бы пользователь посещает https://example.com, они перенаправляются на http://www.example.com, тогда как мы хотели бы, чтобы они были отправлены в https://www.example.com.

Вот переписать правило интереса (в Web.config):


    

    
        
        
        
        
    

    

Как Вы видите, атрибут URL элемента действия указывает непосредственно на http://, таким образом, я добираюсь, почему https://example.com перенаправляется на http://www.example.com. Мой вопрос, как я фиксирую это? Я пытался (наивно) просто отбросить часть http:// от атрибута URL, но это не работало.

23
задан Michael 26 April 2017 в 14:18
поделиться

1 ответ

Принял ответ с помощью моих коллег.

Мне нужно было использовать несколько правил с условием на {HTTPS}. Обратите внимание на условие {HTTPS} в правилах ниже.

<rule name="Canonical Host Name (HTTP)" stopProcessing="true">
    <match url="(.*)" />

    <conditions logicalGrouping="MatchAny">
        <add input="{HTTPS}" pattern="OFF" />
        <add input="{HTTP_HOST}" pattern="^example\.com$" />
    </conditions>

    <action type="Redirect" url="http://www.example.com/{R:1}" redirectType="Permanent" />
</rule>

<rule name="Canonical Host Name (HTTPS)" stopProcessing="true">
    <match url="(.*)" />

    <conditions logicalGrouping="MatchAny">
        <add input="{HTTPS}" pattern="ON" />
        <add input="{HTTP_HOST}" pattern="^example\.com$" />
    </conditions>

    <action type="Redirect" url="https://www.example.com/{R:1}" redirectType="Permanent" />
</rule>

Затем я повторил приведенную выше пару правил для альтернативных доменных имен.

11
ответ дан 29 November 2019 в 01:14
поделиться
Другие вопросы по тегам:

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