IIS 重定向规则用于重定向所有子域流量

IIS 重定向规则用于重定向所有子域流量

我在我的网站的 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或者,something.example.com/test但我正在努力研究如何更改正则表达式来实现这一点。

我努力了:

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

和:

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

但都没有用,因为我显然做错了什么。

我又进一步了解到:

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

但是当我在 IIS 中测试 RegEx 时,结果如下:

  • 从:something.example.com/test
  • 到:.example.com/test

因此,这会删除之前的子域名,但会留下example.com 前面的example.com单个域名,所以我不知道如何删除剩余的。..

我怎样才能实现重定向?

谢谢

答案1

尝试这个

<rule name="redirect subdomain" stopProcessing="true">
        <match url="(.*)" />
        <conditions>
            <add input="{HTTP_HOST}" pattern="^example\.com$"/> 
        </conditions>
        <action type="Redirect" url="https://example.com/{R:1}" redirectType="Permanent" />
    </rule> 

答案2

要修改重写规则以将所有子域重定向到主站点 (example.com),您可以更新条件中的正则表达式模式。以下是修改后的规则:

`<rule name="RedirectSubdomainsToMainSite" enabled="true" stopProcessing="false">
  <match url="(.*)" />
  <conditions logicalGrouping="MatchAll" trackAllCaptures="false">
    <add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)$" />
  </conditions>
  <action type="Redirect" url="https://example.com/{R:1}" redirectType="Permanent" />
</rule>`

相关内容