子域名无法与规范重写配合使用

子域名无法与规范重写配合使用

我已经为我的 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>

相关内容