如何使用IIS Rewrite将服务器名重定向至完整域名
IIS URL Rewrite 实现指定主机头的协议与域名重定向
核心规则配置
直接在网站根目录的web.config文件中添加以下URL Rewrite规则(如果已有<rewrite>节点,直接将<rules>下的内容合并进去):
<configuration> <system.webServer> <rewrite> <rules> <!-- 匹配主机头为sitename的请求,重定向到带domain.com的HTTPS地址 --> <rule name="Redirect sitename to sitename.domain.com" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTP_HOST}" pattern="^sitename$" /> </conditions> <action type="Redirect" url="https://sitename.domain.com/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer> </configuration>
规则说明
<match url="(.*)" />:匹配请求的所有URL路径部分,{R:1}会捕获这部分内容并带到重定向地址中<add input="{HTTP_HOST}" pattern="^sitename$" />:精确匹配主机头为sitename的请求(不管是HTTP还是HTTPS协议)appendQueryString="true":自动保留原始请求的查询字符串(比如?foo=bar)redirectType="Permanent":发送301永久重定向状态码,若需要临时重定向可改为Temporary(302)
排查要点
- 确认IIS URL Rewrite模块已正确安装(可通过IIS管理器的模块列表查看)
- 检查网站的绑定设置:确保HTTP(80端口)和HTTPS(443端口)都已绑定
sitename和sitename.domain.com两个主机头 - 若规则不生效,可启用URL Rewrite的日志功能(在IIS管理器中对应规则的“编辑规则”→“日志”选项),查看请求是否被规则匹配到
- 检查web.config中是否有其他优先级更高的规则,导致当前规则未被执行
内容的提问来源于stack exchange,提问作者funkimunky
相关产品推荐
相关产品推荐

