Перезапись URL IIS7 для HTTPS на стандартном порту 443 - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть два сайта на моем сервере IIS7, один PROD и один TEST. PROD привязан по умолчанию 443 и 80, TEST привязан к 8443 и 8080.

На обоих сайтах я хочу иметь следующее перенаправление URL:

На PROD:

http://example.com/club -> / Club / ClubUser

https://example.com/club -> / Club / ClubUser

В ТЕСТЕ:

http://example.com:8080/club -> / Club / ClubUser

https://example.com:8443/club -> / Club / ClubUser

Так что в принципе, в любом случае, я просто хочу изменить URI. В протоколе нет изменений, я не хочу перенаправлять трафик http на https.

На обоих сайтах у меня определены одинаковые правила перезаписи URL, см. Ниже. Перенаправление работает нормально для 3 случаев из 4 и не работает для этого одного случая:

https://example.com/club -> / Club / ClubUser

Вместо этого происходит следующее перенаправление (поэтому HTTPS перенаправляется на http):

https://example.com/club -> http://example.com/Club/ClubUser

После выполнения всех видов тестов кажется, что, когда порт присутствует в URL, перенаправление происходит правильно. Когда порт используется по умолчанию, он будет перенаправлен на URL-адрес http, но я не понимаю причину.

Правила определены следующим образом на обоих сайтах:

<rule name="Club redirect HTTP" patternSyntax="ExactMatch" stopProcessing="true">
    <match url="club" />
    <conditions logicalGrouping="MatchAny">
        <add input="{HTTPS}" pattern="off" />
    </conditions>
    <action type="Redirect" url="http://{SERVER_NAME}:{SERVER_PORT}/Club/ClubUser" appendQueryString="false" />
</rule>
<rule name="Club redirect HTTPS" patternSyntax="ExactMatch" stopProcessing="true">
    <match url="club" />
    <conditions logicalGrouping="MatchAny">
        <add input="{HTTPS}" pattern="on" />
    </conditions>
    <action type="Redirect" url="https://{SERVER_NAME}:{SERVER_PORT}/Club/ClubUser" appendQueryString="false" />
</rule>

Я попытался использовать {HOST_NAME} вместо {SERVER_NAME}: {SERVER_PORT}, но это также не помогло.

...