IIS重写规则问题:子域名HTTPS跳转异常修复咨询
IIS子域名+HTTPS合并重定向修复方案
问题核心是当前规则未排除已符合目标域名的请求,导致对servername.subdomain.com的请求再次叠加子域名,形成错误跳转。以下是修复后的web.config重写规则:
<rewrite> <rules> <rule name="Redirect to HTTPS and Correct Subdomain" stopProcessing="true"> <!-- 触发条件:HTTP协议 或 域名不是目标子域名 --> <conditions logicalGrouping="MatchAny"> <add input="{HTTPS}" pattern="off" /> <add input="{HTTP_HOST}" pattern="^servername\.subdomain\.com$" negate="true" /> </conditions> <!-- 构造目标地址:固定HTTPS+目标子域名,自动保留原路径和查询参数 --> <action type="Redirect" url="https://servername.subdomain.com{REQUEST_URI}" redirectType="Permanent" /> </rule> </rules> </rewrite>
关键规则说明:
- 条件逻辑:
MatchAny表示只要满足「是HTTP请求」或「域名不是目标子域名」任一条件,就触发重定向 - {REQUEST_URI}:自动包含原请求的完整路径(如
/test/test.aspx)和查询字符串(如?ID=1),无需手动拼接 - negate="true":反向匹配规则,当请求域名已经是
servername.subdomain.com时,该条件不成立,直接跳过重定向,避免重复叠加子域名 - redirectType="Permanent":返回301永久重定向,兼顾SEO优化和浏览器缓存机制
原规则出错原因:
之前的规则未添加「排除目标域名」的判断,导致即使请求已经符合servername.subdomain.com的要求,仍会执行重定向逻辑,错误地将域名再次拼接为servername.subdomain.subdomain.com。
内容的提问来源于stack exchange,提问作者Kᴀτᴢ
相关产品推荐
相关产品推荐

