ASP.NET MVC IIS URL重写:非WWW转WWW排除特定主机规则失效排查
IIS URL重写规则问题排查与修复
你的否定条件未生效的核心原因是使用了IIS URL重写模块不支持的服务器变量{REQUEST_HOST},IIS中没有这个内置变量,应该用{HTTP_HOST}来匹配请求的主机名。
默认情况下规则的条件是逻辑AND关系,需要确保两个条件同时满足才会执行重定向:
- 主机名不以
www.开头 - 主机名不包含
svha-prd-as-careservices-01
修正后的完整规则如下:
<rule name="Redirect Non-WWW to WWW" enabled="true" stopProcessing="true"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_HOST}" pattern="^(?!www\.)(.*)" /> <add input="{HTTP_HOST}" pattern="svha-prd-as-careservices-01" negate="true" /> </conditions> <action type="Redirect" url="https://www.{HTTP_HOST}{REQUEST_URI}" redirectType="Permanent" appendQueryString="true" /> </rule>
补充说明:
- 替换
{REQUEST_HOST}为{HTTP_HOST},这是IIS中获取请求主机头的标准内置变量 - 简化排除规则的正则表达式,直接匹配目标字符串即可,无需前后通配符
- 显式声明
logicalGrouping="MatchAll"(默认值即为该配置,添加后规则逻辑更清晰)
内容的提问来源于stack exchange,提问作者chamara
相关产品推荐
相关产品推荐

