我在我的网站的 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>`