Переписать URL-адрес с HTTP на HTTPS в IIS для определенных доменов

Мне нужно создать глобальное правило, которое перезаписывает все http://example.com/ на https://example.com/ . Я размещаю несколько доменов, и мои попытки либо не работают, либо работают на всех доменах.

Я поместил это в свой applicationHost.config :

<globalRules>
  <rule name="Rewrite test" stopProcessing="true">
    <match url="(.*)" />
    <conditions logicalGrouping="MatchAll">
      <add input="{HTTPS}" pattern="^OFF$" />
    </conditions>
    <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="true" />
  </rule>
</globalRules>

<globalRules>
  <rule name="kommunetv SSL">
    <match url="(.*)" />
      <conditions>
        <add input="{HTTP_HOST}" pattern="http://(.*\.kommunetv.no)(/?.*)" />
       </conditions>
       <action type="Rewrite" url="https://{C:1}{C:2}" appendQueryString="false" />
  </rule>
</globalRules>

Пробовал различные шаблоны соответствия, а также попытки с условиями {HTTP_HOST} . Надеясь на какой-то вклад: )

1
задан 15 August 2019 в 13:27
1 ответ

в applicationHost.config применим ко всему серверу - ко всем доменам.

<условия logicalGrouping="MatchAll">.
 

".

Это проверяет только {HTTPS}, так что да, это перенаправит все домены.

<условия>.
 


Переменная HTTP_HOST содержит только имя хоста из запроса (т.е. значение заголовка HTTP Host). Она не содержит ни схемы, ни URL-пути. Таким образом, приведенное выше условие никогда не будет совпадать и правило ничего не сделает. Если бы оно действительно совпадало, то это создало бы цикл перенаправления, так как вам также нужно проверить состояние HTTPS.

Вам нужно проверить и HTTPS, и HTTP_HOST. Например, что-то вроде:

<conditions logicalGrouping="MatchAll">
    <add input="{HTTPS}" pattern="^off$" />
    <add input="{HTTP_HOST}" pattern="^example\.com$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="true" />
0
ответ дан 4 December 2019 в 05:18

Теги

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