以下是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