IIS 重定向规则,用于重定向所有子域流量 [重复]

IIS Redirect Rule to redirect all subdomain traffic [duplicate]

提问人:4532066 提问时间:10/6/2023 最后编辑:user6929424532066 更新时间:10/6/2023 访问量:73

问:

我在网站上的 web.config 文件中定义了以下重写规则:

<rule name="RedirectWwwToNonWww" enabled="true" stopProcessing="false">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
  </conditions>
  <action type="Redirect" url="https://{C:2}{REQUEST_URI}" redirectType="Permanent" />
</rule>

该规则将重定向如下:

  • 从:www.example.com/test
  • 沃克斯example.com/test

该规则工作正常,但是,我想更改规则,以便所有子域重定向到主站点 - 例如

  • 从:this.example.com/test
  • 沃克斯example.com/test

  • 从:something.example.com/test
  • 沃克斯example.com/test

我正在努力研究如何更改正则表达式以实现这一点。

我尝试了这个模式:

<add input="{HTTP_HOST}" pattern="^([^.]+)\.(.*)$" />

其工作原理如下:

  • 从:something.example.com/test.html
  • 沃克斯example.com/test.html

但是,当没有子域时,它不会做我需要的,因为我最终会得到:

  • 从:example.com/test.html
  • 沃克斯com/test.html

如何修改规则,以便子域重定向到主站点,但如果没有子域,则不会触发规则?

正则表达式 重定向 IIS URL 重写 ASP-Classic

评论


答:

-1赞 samwu 10/6/2023 #1

我提供了一个想法,就是你可以用多个条件来匹配,然后把它设置为,只要满足其中一个条件,就会执行一个重定向。您可以使用此示例作为参考:logicalGrouping="MatchAny"

<rule name="RedirectWwwToNonWww" enabled="true" stopProcessing="false">
   <match url="(.*)" />
      <conditions logicalGrouping="MatchAny" trackAllCaptures="false">
         <add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
         <add input="{HTTP_HOST}" pattern="^([^.]+)\.(.*)$" />
      </conditions>
   <action type="Redirect" url="https://{C:2}{REQUEST_URI}" redirectType="Permanent" />
</rule>