在此Sitecore网站(6.5.0修订版120706)上,我有这个sitecore项目称为XYZ。所以我有http://example.com/XYZ/。没有语言代码的Sitecore显示名称网址不起作用
我已经添加了法语的本地化,所以使用的显示名称我现在有:
http://example.com/XYZ-en/ http://example.com/XYZ-fr/
英文版的效果很好,但法国不和解析为404,除非我去先选择英文,先点击我的语言切换按钮。当我点击它时,我被重定向到http://example.com/fr-CA/XYZ-fr/,这是有效的。从此,英文网站停止工作,法文工作。当我切换这样的语言时,我总是只有其中的一个工作。
那个按钮运行该代码:
protected void LanguageLinkClick(object sender, EventArgs e)
{
var lang = (Sitecore.Context.Language.Name == "en") ? "fr-ca" : "en";
Tools.RedirectToLanguage(lang, Response);
}
这个工具函数运行下面的代码:
public static void RedirectToLanguage(string pStrLangToSet, HttpResponse pResponse)
{
if (!string.IsNullOrEmpty(pStrLangToSet))
{
var newLang = Language.Parse(pStrLangToSet);
if (newLang != null)
{
Sitecore.Context.SetLanguage(newLang, true);
var itm = Sitecore.Context.Item;
if (Sitecore.Context.Item != null)
{
var itemInLang = Sitecore.Context.Database.Items[itm.ID, newLang];
if (itemInLang != null)
{
pResponse.Redirect(BuildUrl(itemInLang));
}
}
}
}
}
这有点老代码,在这个旧项目。
有什么我应该寻找的,将拦截默认的显示名称行为?或者,这种显示名称的行为是不是开箱即用的?
感谢您的帮助!
组合中是否有自定义的ItemResolver?网址中的XYZ-en \和XYZ-fr \并不是真正代表Sitecore的典型代表。我们通常希望看到XYZ \ en \和XYZ \ fr \。 –
嗨马特,我的例子网址可能会引起误解。他们实际上更像“非常有产品的选项”和“Mon-Produit-Avec-Plusieurs-Options”。希望这有助于澄清! 否则,我确实在ItemResolver之后运行了301解析器。那个人看着一个小SQLCE数据库来执行oldsite-newsite 301重定向。 –