我正在Sitecore 7.5中构建一个多语言网站,我希望始终在网址的开头显示该语言,例如mysite.com/en/article1.aspx
。
为实现这一目标,我使用LinkManager
根据this博客修补了languageEmbedding="always"
配置。现在,当通过Sitecore.Context.SetLanguage()
更改语言时,URL会在跟踪链接时正确更改为相应的语言代码......到目前为止一切都很好!
当我尝试链接到home元素时出现问题,例如通过重定向:
var homeItem = Sitecore.Context.Database.GetItem(<GUID to home>);
var url = LinkManager.GetItemUrl(homeItem);
Redirect(url);
生成的网址为mysite.com/en.aspx
,其中显示位于网站根文件夹中的名为Default.aspx
的网页。当然,我希望它直接转到mysite.com/en/
,它对应于给定语言中的主项,如果手动输入则有效。
在我看来,LinkManager
有一个错误,因此在将语言嵌入到URL时无法正确解析主项。或者只是我犯了错误?
有人知道解决这个问题吗?如何让LinkManager
添加尾部斜杠?
更新 以下是我的内容树的屏幕截图:
答案 0 :(得分:0)
关于你得到的default.aspx。你可以通过在Application_Start()中的global.asax中添加一行来修复MVC。 System.Web.Routing.RouteTable.Routes.RouteExistingFiles = true;
protected void Application_Start()
{
System.Web.Routing.RouteTable.Routes.RouteExistingFiles = true;
}
请参阅sitecore-and-the-error-page和john-west-sitecore-blog/posts/2012/11/conflicting-files-mvc-routes-and-item-paths-in-the-sitecore-aspnet-cms
我不会根据您的意愿更改您的网址,但这是默认行为。