我正在研究301网址重定向,之前我尝试过一些Sitecore重定向模块,但我正在寻找推荐的方法,实际上我有要求从网址中删除语言代码“en”如果语言是英语并保留它其他语言,我在链接管理器中这样做,例如当用户点击关于我们链接时,它将带他到没有这样的语言代码的页面:
www.mywebsite.com/about-us
但我仍然可以手动使用语言代码访问网址:
www.mywebstie.com/en/about-us
所以现在我有两个网址到同一页面。这不推荐用于SEO。最后我只想为每个页面添加一个网址。
另一个例子,关于我们可以用连字符访问
www.mywebstie.com/about-us
和空格
www.mywebstie.com/关于我们
解决此问题的最佳方法是什么?
答案 0 :(得分:2)
使用Canonical是一个选项,<link id="Canonical" rel="canonical" href="/about-us/" />
然后你的SEO问题就消失了。
或者只是在您的MasterPage中创建重定向,如下所示:
string goodUrl = LinkManager.GetItemUrl(Sitecore.Context.Item);
if (goodUrl != Request.Path)
{
Response.RedirectPermanent(goodUrl);
}
除了您已经提到的变体之外,这也适用于/about-us.aspx和/about-us.ashx。其他选项是,你当然也可以在httpRequestBegin管道中解决这个问题,ItemResolver。
答案 1 :(得分:1)
如何实现所需的行为有很多选择:
您可以配置Sitecore网站
配置LinkManager(Sitecore.config):更改默认LinkProvider中的设置。要从URL中排除语言,请设置languageEmbedding =“never”languageLocation =“queryString”。
配置encodeNameReplacements(Sitecore.config):添加此规则
&lt; replace mode =“on”find =“”replaceWith =“ - ”&gt;
用破折号替换空格。
为您的目的撰写your own LinkProvider
安装并配置可以重定向请求的IIS扩展。
例如:URL Rewrite,Ionic's Isapi Rewrite Filter或ISAPI_Rewrite但be careful如果您打算在CM实例上使用此模块。
我建议您尝试配置Sitecore LinkManager提供程序,encodeNameReplacement规则(列表中的第1项)并添加规范链接(列表中的第2项)。看来这对你的任务来说已经足够了。
如果配置和规范链接不够,您可以扩展默认的Sitecore行为(列表中的第3项)或安装和配置IIS模块(列表中的第4项)。