Sitecore中URL添加国家码后页面解析404异常求助
以下是几个核心缺失环节的排查方向:
确认上下文语言是否正确设置
重写HttpRequestProcessor后,不能只解析URL中的语言码,必须将解析出的语言(如zh-tw)赋值给Context.Language。如果跳过这一步,后续GetItem会使用默认语言查找,若目标Item没有对应语言版本,就会返回null。示例代码:var targetLanguage = Language.Parse("zh-tw"); Context.Language = targetLanguage;验证URL路径的剥离逻辑
你的URL格式是sitename/zh-tw/tw/pagename,必须确保自定义处理器正确剥离zh-tw和tw这两个前缀段,只把pagename对应的实际Item路径(比如/sitecore/content/sitename/pagename)传递给Sitecore的解析逻辑。如果错误地将tw纳入Item路径,自然找不到对应内容。检查语言项与Item版本配置
确认/sitecore/system/Languages下是否存在zh-tw语言项,同时目标Item是否创建了该语言的版本。任一缺失都会导致GetItem返回null。核对自定义处理器的执行顺序
自定义的HttpRequestProcessor必须在Sitecore默认的ItemResolver处理器之前执行。如果配置顺序颠倒,默认解析逻辑会先按错误路径查找Item,直接触发404。需在配置文件中确保自定义处理器位于<processor type="Sitecore.Pipelines.HttpRequest.ItemResolver, Sitecore.Kernel"之前。调试GetItem的实际参数
在调用Context.Database.GetItem的位置,打印传入的Item路径和语言参数,确认是否与预期一致。比如:var targetPath = "/sitecore/content/home/pagename"; var targetItem = Context.Database.GetItem(targetPath, Context.Language); // 输出targetPath和Context.Language.Name,验证参数正确性
内容的提问来源于stack exchange,提问作者Parvathi Somanahalli

