1

我正在处理 301 url 重定向,我之前尝试过一些 Sitecore 重定向模块,但我正在寻找推荐的方法,实际上,如果语言是英语,我需要从 URL 中删除语言代码“en”并将其保留为其他语言,我在链接管理器中做到了这一点,例如当用户点击关于我们的链接时,它会将他带到没有语言代码的页面,如下所示:

www.mywebsite.com/about-us

但我仍然可以像这样手动访问带有语言代码的网址:

www.mywebstie.com/en/about-us

所以现在我有两个指向同一页面的网址。这不推荐用于 SEO。最后我想要每个页面只有一个 url。

另一个例子,关于我们可以用连字符访问

www.mywebstie.com/about-us

并且有空间

www.mywebstie.com/关于我们

解决此问题的最佳方法是什么?

4

2 回答 2

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 中解决这个问题。

于 2016-04-23T18:52:43.423 回答
1

如何实现所需行为有多种选择:

  1. 您可以配置您的 Sitecore 网站

    配置 LinkManager (Sitecore.config):更改默认 LinkProvider 中的设置。要从 URL 中排除语言,请设置 languageEmbedding="never" languageLocation="queryString"。

    配置 encodeNameReplacements (Sitecore.config):添加此规则

    <replace mode="on" find="" replaceWith="-">

    用破折号替换空格。

  2. 使用规范链接

  3. 为您的目的 编写您自己的 LinkProvider

  4. 安装和配置可以重定向您的请求的 IIS 扩展。

    例如:URL 重写Ionic 的 Isapi 重写过滤器ISAPI_Rewrite但如果您计划在 CM 实例上使用此模块,请小心。

我建议您尝试配置您的 Sitecore LinkManager 提供程序、encodeNameReplacement 规则(列表中的第 1 项)并添加规范链接(列表中的第 2 项)。看来这足以完成您的任务。

如果配置和规范链接还不够,您可以扩展默认的 Sitecore 行为(列表中的第 3 项)或安装和配置 IIS 模块(列表中的第 4 项)。

于 2016-04-23T20:26:39.347 回答