IIS web.config配置子域重定向至主域规则报错修复方法
故障原因
原有配置触发重定向次数过多错误,核心问题有2个:
- 跳转逻辑中仍使用
{HTTP_HOST}变量拼接目标地址,访问preview子域名时该变量的取值就是preview.mysite.com,等于跳转后再次命中规则,形成无限重定向循环 - 匹配条件将主机名和请求路径拼接后做模糊匹配,既容易出现误判,也没有做精准的子域名识别
修正后的重定向规则
将web.config中原有错误规则替换为以下内容即可:
<rule name="Redirect away from Preview" enabled="true" stopProcessing="true"> <match url=".*" /> <conditions> <add input="{HTTP_HOST}" pattern="^preview\.mysite\.com$" ignoreCase="true" /> </conditions> <action type="Redirect" url="https://mysite.com{REQUEST_URI}" redirectType="Permanent" appendQueryString="false" /> </rule>
规则说明
- 匹配条件直接读取
{HTTP_HOST}服务器变量做精确匹配,仅当访问域名确实为preview.mysite.com时才触发重定向,避免路径中包含相关字符串导致的误跳转 - 目标跳转地址直接写定主域名
mysite.com,彻底替换原先会取到子域名的变量,从根源解决死循环问题 - 拼接
{REQUEST_URI}变量可完整保留原访问的路径、查询参数,例如访问https://preview.mysite.com/article/123?from=old会自动跳转到https://mysite.com/article/123?from=old,不会丢失访问路径 - 若你的主站同时支持HTTP访问,可将跳转地址中的
https://替换为http://,或通过{HTTPS}变量自动适配协议
内容的提问来源于stack exchange,提问作者pokerPro
相关产品推荐
相关产品推荐

