如何才能正确地将mysite.com重写为www.mysite.com而没有别的?

时间:2013-02-07 19:43:07

标签: regex asp.net-mvc iis url-rewriting

以下是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”,例如:

  • localhost:62083 - &gt; www.localhost:62083
  • static.mysite.com - &gt; www.static.mysite.com
  • mysite.hostcompany.com - &gt; www.mysite.hostcompany.com

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

3 个答案:

答案 0 :(得分:3)

我认为你过分思考它。我无法测试它,但最简单的方法似乎是将你的条件改为只是匹配你想要重写的名字。

<add input="{HTTP_HOST}" negate="false" pattern="^mysite.com$"/>`?

答案 1 :(得分:1)

尝试更改此行:

<add input="{HTTP_HOST}" negate="false" pattern="^mysite.com$"/>

答案 2 :(得分:1)

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

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

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

  • 优势:独立于域名
  • 缺点:不适用于www.mysection.company.com