如何禁用Sitecore';嵌入式语言分析器

如何禁用Sitecore';嵌入式语言分析器,sitecore,sitecore7,Sitecore,Sitecore7,我有一个网站,有许多URL重写,其中很大一部分包含前缀为国家代码的旧链接(例如/fr,/de等)。没有前缀的重写可以正常工作,但是使用TriggerSiteCore的嵌入式语言URL解析器的重写可以完全绕过重写模块 示例 /fr/old link试图将“fr”解析为一种语言,但由于“fr-fr”是法语的名称而失败 解决方案我需要禁用Sitecore在URL中检测语言前缀的功能,以便URL重写模块可以不受阻碍地进行 我找不到发生这种情况的地方。我已经用反射器做了无数次试验,结果都失败了。我需要帮助

我有一个网站,有许多URL重写,其中很大一部分包含前缀为国家代码的旧链接(例如/fr,/de等)。没有前缀的重写可以正常工作,但是使用TriggerSiteCore的嵌入式语言URL解析器的重写可以完全绕过重写模块

示例 /fr/old link试图将“fr”解析为一种语言,但由于“fr-fr”是法语的名称而失败

解决方案我需要禁用Sitecore在URL中检测语言前缀的功能,以便URL重写模块可以不受阻碍地进行


我找不到发生这种情况的地方。我已经用反射器做了无数次试验,结果都失败了。我需要帮助。

您需要创建一个新的LanguageResolver来替换标准的Sitecore解决方案(
Sitecore.Pipelines.HttpRequest.LanguageResolver
)。这在web.config的
管道部分中引用。在这里,您可以处理以fr开头的请求,而不是fr-fr等。在过去,当我们想要使用非ISO语言代码时,我也做过类似的事情

编辑


languageSolver
首先根据查询字符串解析语言,但也将根据文件路径解析语言(即在路径的开头有fr)。我认为您需要从Sitecore LanguageSolver继承并重写GetLanguageFromRequest方法,更改
else
语句以使用与
Context.Data.FilePathLanguage
不同的内容-可能只需使用regex/string操作从URL获取第一个文件夹,然后使用它来设置上下文语言。这应该可以防止解析语言失败,据我所知,该语言正在扼杀URL重写模块。

另一个管道是预处理请求管道。它有一个StripLanguage处理器,用于检测URL的第一部分是否是一种语言并对其进行操作


关于如何让Sitecore忽略url的语言部分的更多信息,请参阅本文

感谢您的回复,不过这是我看到的第一个处理器,但它只处理更改上下文语言的查询字符串参数方法,而不是项目路径前的前缀。我只需要截取并“跳过”管道中的该元素,现有的语言解析器就可以了。@wardey请查看我上面的编辑。希望这能解决你的疑问。我羞愧地低下头:)这里是一片适合树木生长的树林。我一直在旋转很多盘子,一定是忽略了它。非常感谢,现在回到这里。我在这里得到了一些关于StripLanguage和URL解析的信息:也许这对你的情况有帮助谢谢你,Ruud,我很快会看一看:)谢谢你,我很快会看一看:)这就是造成问题的原因。重写模块以其他方式影响Sitecore,因此我保留了配置文件,并编写了自己的管道进程来拦截请求,并将其与任何重写进行匹配。感谢那些做出贡献的人。