如何正确地只将mysite.com重写为www.mysite.com,而不重写其他内容



以下是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->www.localhost:62083
  • static.mysite.com->www.static.mysite.com
  • mysite.hostcompany.com->www.mysite.hostcompany.com

我只需要它重定向mysite.com,而不重定向其他内容。如何修正规则?

我觉得你想得太多了。我无法测试它,但最简单的方法似乎是将条件更改为,只需匹配你想要重写的名称。

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

尝试更改此行:

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

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

^[^.].[^.]$

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

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

最新更新