用于重定向所有子域通信的IIS重定向规则[重复]

cidc1ykv  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(155)

这个问题已经有答案了

IIS Rewrite URL Condition Grouping(1个答案)
10天前关闭。
我在我的网站上的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

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

gmxoilav

gmxoilav1#

我提供一个思路,就是可以用多个条件来匹配,然后设置为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>

相关问题