1

这是 Web.config 中将裸域重定向到 www 的部分。

<system.webServer>
<rewrite>
  <rules>
    <clear/>
    <rule name="WWW Rewrite" enabled="true">
      <match url="(.*)"/>
      <conditions>
        <add input="{HTTP_HOST}" negate="true" pattern="^www\."/>
      </conditions>
      <action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent"/>
    </rule>
  </rules>
</rewrite>
</system.webServer>

问题是它还在任何其他地址前面添加了“www”,例如:

  • 本地主机:62083 -> www.localhost:62083
  • static.mysite.com -> www.static.mysite.com
  • mysite.hostcompany.com -> www.mysite.hostcompany.com

我只需要它来重定向 mysite.com 而不是别的。如何修复规则?

4

3 回答 3

3

我觉得你想多了。我无法对其进行测试,但最简单的方法似乎是更改您的条件以匹配想要重写的名称。

<add input="{HTTP_HOST}" negate="false" pattern="^mysite.com$"/>`?
于 2013-02-07T19:46:47.560 回答
1

尝试更改此行:

<add input="{HTTP_HOST}" negate="false" pattern="^mysite.com$"/>
于 2013-02-07T19:46:40.903 回答
1

如果pattern是正则表达式,您可以使用

^[^\.]\.[^\.]$

仅重定向没有子域的请求(仅包含一个点)

  • 优点:独立于域名
  • 缺点:不适用于 www.mysection.company.com
于 2013-02-07T19:46:41.303 回答