配置URL Rewrite规则实现oldhostname/oldsubfolder重定向遇404问题求助
解决思路及修正方案
1. 确认规则配置位置
你已将oldhostname设为newhostname的DNS别名,所有发往oldhostname的请求最终会落到newhostname服务器上。因此必须把Rewrite规则配置在newhostname对应的IIS站点中,同时要确保该站点已绑定oldhostname主机头——如果未绑定,IIS无法识别请求,会直接返回404。
2. 修正Rewrite规则
现有规则逻辑接近,但需调整细节以覆盖路径匹配场景并避免冗余斜杠:
<rule name="Redirect Old Subfolder to New Host" stopProcessing="true"> <match url="^oldsubfolder(/.*)?$" /> <conditions> <add input="{HTTP_HOST}" pattern="^oldhostname$" /> </conditions> <action type="Redirect" url="https://newhostname{R:1}" redirectType="Permanent" /> </rule>
规则说明:
^oldsubfolder(/.*)?$:匹配以oldsubfolder开头的所有路径,兼容/oldsubfolder和/oldsubfolder/xxx两种格式{R:1}:自动拼接匹配到的后缀路径,原路径为/oldsubfolder/page1时,最终重定向到https://newhostname/page1;原路径为/oldsubfolder时,重定向到https://newhostname
3. 排查404额外诱因
- 若
newhostname站点存在oldsubfolder物理目录,IIS会优先尝试访问目录而非触发规则,需禁用该目录的目录浏览权限,或在规则中添加条件排除物理文件/目录:<conditions> <add input="{HTTP_HOST}" pattern="^oldhostname$" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" /> </conditions> - 验证URL Rewrite模块是否正确安装:查看IIS管理器站点是否有「URL重写」图标,无则需重新安装模块
- 查看IIS请求日志:确认请求的
Host头、URL路径是否符合预期,判断规则是否被触发
内容的提问来源于stack exchange,提问作者Greg Davis
相关产品推荐
相关产品推荐

