我已经为我的 Web 应用程序配置了通配符子域映射。为此,我已在 DNS 设置中更改了“A”记录。对这些新子域的所有请求均运行正常。
Ex: http://test1.foo.com, test2.foo.com
后来我配置了IIS7 Canonical重写,如下所示:
<rewrite>
<rules>
<rule name="Enforce canonical hostname" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^www\.foo\.com$" />
</conditions>
<action type="Redirect" url="http://www.foo.com/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
添加上述代码后,所有通配符子域都将路由到http://www.foo.com。
我希望所有子域名都能够顺利地应用规范重写。
请帮我。
答案1
这个问题有点老了,但看看这是否有助于解决子域问题。我还没有测试过,但我相信它应该能满足你的需要。
<rewrite>
<rules>
<rule name="Enforce canonical hostname - save subdomains" stopProcessing="true">
<match url=".?" ignoreCase="false" />
<conditions>
<add input="{HTTP_HOST}" pattern="^([a-z.]+\.)?foo\.com$" />
<add input="{HTTP_HOST}" pattern="^www\." negate="true" />
</conditions>
<action type="Redirect" redirectType="Permanent" url="http://www.{C:1}foo.com{URL}" />
</rule>
</rules>
</rewrite>