Назад | Перейти на главную страницу

Переписать 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} условия. Надеюсь на ввод :)

<globalRules> в applicationHost.config применяется ко всему серверу - всем доменам.

<conditions logicalGrouping="MatchAll">
    <add input="{HTTPS}" pattern="^OFF$" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" appendQueryString="true"/>

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

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

В 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" />