我尝试设置重写规则,但似乎无法正常工作。我的 www.domain.org 最终仍为 www。我这里遗漏了什么?
我从 domain.org 重定向到 HTTPS 可以正常工作。
<rewrite> <rules>
<rule name="Redirect www.xxx.com to xxx.com" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="^www\.tdccf\.org$" />
</conditions>
<action type="Redirect" url="https://tdccf.org/{R:0}" />
</rule>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule> </rules> </rewrite>
谢谢!
答案1
您{HTTPS}
指定的输入是 ,而不是{HTTP_HOST}
。{HTTPS}
输入包含文字值on
或 ,off
它永远不会与正则表达式匹配^www\.tdccf\.org$
。 {HTTP_HOST}
另一方面, 包含请求的主机部分。
<rewrite> <rules>
<rule name="Redirect www.xxx.com to xxx.com" patternSyntax="ECMAScript" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" pattern="^www\.tdccf\.org$" />
</conditions>
<action type="Redirect" url="https://tdccf.org/{R:0}" />
</rule>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
</conditions>
<action type="Redirect" redirectType="Found" url="https://{HTTP_HOST}/{R:1}" />
</rule> </rules> </rewrite>
查看MSDN 文档了解匹配语法的完整信息。