Sitecore 8.2应用中IIS Redirect配置失效问题求助
Sitecore 8.2 无站点前缀URL重定向失效问题解决建议
核心问题分析
不带TestApp前缀的请求被Sitecore提前判定为无效站点请求,直接触发错误页,未进入IIS URL Rewrite的处理流程;而带TestApp的请求能匹配到已配置的站点定义,因此重定向规则正常生效。
具体解决步骤
1. 调整URL Rewrite规则优先级与拦截逻辑
确保重定向规则在Sitecore相关规则之前执行,且匹配后立即终止后续处理,避免Sitecore接管请求:
<rewrite> <rules> <!-- 将重定向规则放在所有Sitecore规则最顶部 --> <rule name="Redirect Root wl/pages Path" stopProcessing="true"> <match url="^wl/pages/(.*)$" /> <conditions> <!-- 匹配目标域名,避免影响其他站点 --> <add input="{HTTP_HOST}" pattern="^Testing.com$" /> <!-- 排除带TestApp前缀的请求,避免重复处理 --> <add input="{REQUEST_URI}" negate="true" pattern="^/TestApp/.*$" /> </conditions> <action type="Redirect" url="https://Testing.com/{R:1}" redirectType="Permanent" /> </rule> <!-- 原有Sitecore相关规则放在下方 --> <rule name="Sitecore Friendly URLs" enabled="true"> <!-- 原有规则内容 --> </rule> </rules> </rewrite>
关键配置:stopProcessing="true"确保匹配后直接完成重定向,不进入后续Sitecore处理流程。
2. 配置根站点定义
在SiteDefinition.config中添加根站点(无TestApp前缀)的配置,让Sitecore识别该域名下的根路径请求为有效站点请求:
<site name="root-website" hostName="Testing.com" rootPath="/sitecore/content/RootSite" startItem="/Home" language="en" enablePreview="true" enableWebEdit="true" />
- 若无需实际内容,可创建一个空的根站点节点,只要Sitecore能匹配到站点,就不会直接触发错误页。
- 确保
hostName与目标域名完全匹配,避免站点解析失败。
3. 检查Sitecore请求管道与404配置
- 访问
/sitecore/admin/showconfig.aspx查看httpRequestBegin管道顺序,确保IIS URL Rewrite模块在Sitecore的ItemResolver之前执行(IIS层面模块默认优先于ASP.NET管道,若顺序异常需在IIS模块列表中调整)。 - 暂时关闭Sitecore自定义错误页(
web.config中设置<customErrors mode="Off"/>),测试重定向规则是否生效,排查是否是错误页拦截了重定向。
4. 验证IIS模块与绑定
- 确认URL Rewrite模块已在IIS中启用,且模块执行顺序排在Sitecore相关模块之前。
- 检查Testing.com的IIS站点绑定,确保指向正确的Sitecore应用程序池与物理路径,无域名绑定冲突。
内容的提问来源于stack exchange,提问作者visweswaran
相关产品推荐
相关产品推荐

