Azure WebApp站点合并时IIS重定向的web.config配置咨询
解决方案:调整web.config重写规则以适配多域名页面级重定向
问题根源分析
- 现有
Redirect site2 root to site1规则直接将所有site2请求跳转到site1根目录,未保留原请求路径,导致重定向模块无法识别site2blog/这类路径做映射。 - 规则顺序不合理,且未给第三方重定向模块留出处理页面级重定向的空间,导致site1的
oldurl无法触发配置的重定向,返回404。
修改后的web.config规则配置
<!-- 1. 优先处理site1的非www转www,保留原路径 --> <rule name="Redirects to non-www to www - site1" enabled="true" patternSyntax="ECMAScript" stopProcessing="false"> <match url=".*" /> <conditions logicalGrouping="MatchAny" trackAllCaptures="false"> <add input="{HTTP_HOST}" pattern="^site1\.com$" /> </conditions> <action type="Redirect" url="https://www.site1.com/{R:0}" redirectType="Permanent" /> </rule> <!-- 2. 处理site2的域名跳转,保留原请求路径,让重定向模块处理路径映射 --> <rule name="Redirect site2 to site1 with path" stopProcessing="false"> <match url=".*" /> <conditions logicalGrouping="MatchAll"> <add input="{HTTP_HOST}" pattern="^(www\.)?site2\.com$" /> </conditions> <!-- 保留原请求路径{R:0},重定向模块会在此基础上处理页面级映射(如site2blog/ → blog) --> <action type="Redirect" url="https://www.site1.com/{R:0}" redirectType="Permanent" /> </rule>
关键修改说明
- 规则顺序调整:先完成site1的域名标准化(非www转www),再处理site2的域名跳转,确保所有请求先统一到标准域名格式,再进入重定向模块的页面级处理流程。
- site2规则优化:将固定跳转根目录改为保留原路径
{R:0},这样www.site2.com/site2blog/会先跳转到www.site1.com/site2blog/,之后第三方重定向模块就能识别该路径并完成到www.site1.com/blog的页面级重定向。 - stopProcessing设置:保持
stopProcessing="false",让请求能继续流转到第三方重定向模块,处理site1内部的oldurl→newurl这类页面级重定向。
额外注意事项
- 确保第三方重定向模块已正确配置所有页面级重定向规则(包括site2路径到site1路径的映射、site1内部的旧路径映射)。
- 在Azure WebApp中,可通过应用服务→配置→路径映射确认多域名绑定已正确生效,避免DNS或域名绑定问题导致规则不触发。
内容的提问来源于stack exchange,提问作者Binoy
相关产品推荐
相关产品推荐

