使用IIS URL重写从网址中删除www子域的最佳方法是什么?
答案 0 :(得分:35)
如果您希望它与任何主机名一起使用(不将其硬编码到规则中),您需要执行以下操作:
<rule name="Remove www" stopProcessing="true">
<match url="(.*)" ignoreCase="true" />
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www\.(.+)$" />
</conditions>
<action type="Redirect" url="http://{C:1}/{R:0}" appendQueryString="true" redirectType="Permanent" />
</rule>
在重定向操作中,{C:1}包含条件中的第二个捕获组,而{R:0}包含规则中的任何内容(路径)。 appendQueryString =“true”还会将任何查询字符串附加到重定向(如果存在)。但请记住,任何url哈希值(如果存在)都将在此过程中丢失,因为它们不会传递给服务器。
答案 1 :(得分:5)
以下一项应该有效:
<system.webServer>
<rewrite>
<rules>
<rule name="Remove WWW" stopProcessing="true">
<match url="^(.*)$" />
<conditions>
<add input="{HTTP_HOST}" pattern="^(www\.)(.*)$" />
</conditions>
<action type="Redirect" url="http://www.example.com{PATH_INFO}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>
</system.webServer>
答案 2 :(得分:5)
IIS会自动为您完成:
选择网站&gt;网址重写&gt;新规则&gt;规范主机名:)
答案 3 :(得分:-1)
要执行适用于http和https的重定向,可以使用以下内容
<rewrite>
<rules>
<rule name="Lose the www" enabled="true" stopProcessing="true">
<match url="(.*)" ignoreCase="true"/>
<conditions logicalGrouping="MatchAll">
<add input="{HTTP_HOST}" pattern="^www\.(.*)$"/>
</conditions>
<action type="Redirect" redirectType="Permanent" url="{SchemeMap:{HTTPS}}://{C:1}/{R:1}" appendQueryString="true" />
</rule>
</rules>
<rewriteMaps>
<rewriteMap name="SchemeMap">
<add key="on" value="https" />
<add key="off" value="http" />
</rewriteMap>
</rewriteMaps>
</rewrite>