我想让一个网站在地址中始终有www,并通过IIS重写强制执行。
例如,test.com将成为www.test.com。
典型的重写规则示例是:
<rule name="Canonical Host Name" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^www\.test\.com$" />
</conditions>
<action type="Redirect" url="http://www.test.com/{R:1}" redirectType="Permanent" />
</rule>
但是这需要我输入我网站的完整网址。它不适用于具有www.test.dev和www.test.stage等URL的开发和登台环境。
是否可以创建一个能够处理所有这些案例的IIS重写规则?
答案 0 :(得分:4)
我有另一种解决方案:
<rule name="Canonical domain name" enabled="true" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTP_HOST}" negate="true" pattern="^www\.([.a-zA-Z0-9]+)$" />
</conditions>
<action type="Redirect" url="http://www.{HTTP_HOST}/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>
答案 1 :(得分:1)
您是正确的,完整的URL需要在web.config中。你有选择。
您可以使用配置转换使正则表达式与正确的环境匹配。
如果在web.config中包含所有三个URL重写规则,则似乎没有任何损害。听起来您的环境是孤立的,因此每个环境都只能匹配其中一个规则。这可能会使你的web.config混乱,但并不可怕。
我选择选项1.您可以在此处找到有关配置转换的信息:http://msdn.microsoft.com/en-us/library/dd465326.aspx
答案 2 :(得分:0)
我还建议您在本地环境中进行测试的另一种变体:
127.0.0.1 www.example.com
在IIS管理器中选择站点并右键单击 - &gt;编辑绑定.. - &gt;添加..
输入主机名:www.example.com
打开cmd并运行iisreset
现在您可以在浏览器中使用www.example.com映射到localhost