Ответ 1
Правило
<rule name="Redirect to www subdomain">
<match url=".*" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" negate="true" />
<add input="{SERVER_PROTOCOL}" pattern="^(.*)(/.*)?$"/>
</conditions>
<action type="Redirect" url="{C:1}://www.{HTTP_HOST}/{R:0}" redirectType="Permanent"/>
</rule>
Объяснение правила
-
<match />
Ограничивает правило только запросами, чей путь и строка запроса соответствуют заданному шаблону. В нашем случае мы хотим сопоставить все пути и строки запроса, так как мы будем перенаправлять на основе домена. -
<conditions />
Ограничивает еще одно правило только согласованными запросами, удовлетворяющими заданным условиям. Первое условие исключает запросы, домен которых уже начинается с "www". Второе условие существует только для обратной ссылки {C: 1} и не должно отфильтровывать что-либо. -
<action>
добавляет "www." к домену, а затем перенаправляет.
Переменные
-
{R:0}
является обратной ссылкой на полное соответствие тега<match \>
. Ссылка на обратную ссылку должна содержать только строку пути и запроса, поскольку это все, что соответствует<match \>
. -
{C:1}
является обратной ссылкой на первую группу соответствий из конечного условия. Это должно содержать все до "/" в переменной {SERVER_PROTOCOL}. -
{HTTP_HOST}
- это переменная сервера, которая содержит запрошенный домен. (См. здесь для полного списка.) -
{SERVER_PROTOCOL}
другая переменная сервера. Его формат должен быть "{protocol}/{номер версии}".
Другие параметры
-
<action redirectType>
может быть временным, найденным или SeeOther. (См. здесь для получения дополнительной информации.) -
<conditions logicalGrouping>
может быть MatchAll или MatchAny.
Заключение
Для более полного объяснения, пожалуйста, см. здесь.