Мне нужно создать глобальное правило, которое перезаписывает все 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}
. Надеясь на какой-то вклад: )
в 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" />