如何在IIS中配置URL重写实现指定HTTP域名跳转至HTTPS地址
搞定IIS URL重定向:HTTP域名转向指定HTTPS地址
嘿,我来帮你调整这个重写规则~你当前的配置有个小问题:<match url="http://test-qa" />这里的写法不对,因为match标签的url属性是用来匹配URL里域名后面的路径部分,不是完整的域名地址。要判断用户访问的是哪两个HTTP域名,得用条件来检查请求的主机头才行。
下面是修正后的完整配置,我会给你拆解每个部分的作用:
<rewrite> <rules> <rule name="Redirect Test Domains to HTTPS" stopProcessing="true"> <!-- 匹配所有路径,因为我们只关心域名和协议,不管用户访问的具体路径 --> <match url=".*" /> <conditions logicalGrouping="MatchAny"> <!-- 第一个条件:当前请求是HTTP协议(不是HTTPS) --> <add input="{HTTPS}" pattern="off" /> <!-- 第二个条件:访问的主机头是test-qa --> <add input="{HTTP_HOST}" pattern="^test-qa$" /> <!-- 第三个条件:访问的主机头是test-qa.domain.com --> <add input="{HTTP_HOST}" pattern="^test-qa\.domain\.com$" /> </conditions> <!-- 重定向到目标HTTPS地址,{R:0}会保留原请求的路径和查询字符串 --> <action type="Redirect" url="https://test.qa.domain.com/{R:0}" appendQueryString="true" redirectType="Permanent" /> </rule> </rules> </rewrite>
关键部分解释:
<match url=".*" />:匹配所有路径内容,因为我们的重定向逻辑只关注域名和协议,不管用户访问的具体页面是什么。<conditions logicalGrouping="MatchAny">:表示只要满足其中任意一个条件就触发重定向。这里的组合逻辑是:当用户用HTTP访问test-qa或者test-qa.domain.com时,就执行重定向。<action>参数说明:redirectType="Permanent":返回301永久重定向,对搜索引擎SEO友好;如果只是临时重定向,可以改成Found(对应302状态码)。{R:0}:会把原请求的路径和查询字符串带到新地址里,比如用户访问http://test-qa/path?foo=bar,会重定向到https://test.qa.domain.com/path?foo=bar。如果不需要保留路径,直接把url写成https://test.qa.domain.com即可。appendQueryString="true":配合{R:0}使用,确保查询字符串被保留;如果不需要,可以设为false。
额外注意事项:
- 确保你的IIS已经安装了URL重写模块,如果没装,需要通过IIS管理器的「模块」功能安装,或者用Web平台安装程序添加。
- 确认
https://test.qa.domain.com已经在IIS上绑定了有效的SSL证书,否则重定向后会出现浏览器证书错误。 - 测试前记得清除浏览器缓存,避免旧的重定向缓存影响测试结果。
内容的提问来源于stack exchange,提问作者Spidey
相关产品推荐
相关产品推荐

