将 WWW.domain.org 重定向至 domain.org

将 WWW.domain.org 重定向至 domain.org

我尝试设置重写规则,但似乎无法正常工作。我的 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 文档了解匹配语法的完整信息。

相关内容