2016-04-23 134 views
1

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

www.mywebsite.com/about -us

但我仍然可以像这样手动访问网址:

www.mywebstie.com/en/about-us

所以现在我有两个URL相同的页面。这不建议用于搜索引擎优化。最后我只想为每个页面创建一个url。

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

www.mywebstie.com/about-us

与空间

www.mywebstie.com /关于我们

什么是s的最佳方法这个问题呢?

回答

2

使用Canonical是一个选项,<link id="Canonical" rel="canonical" href="/about-us/" />然后你SEO的问题消失了。

或者只是创造重定向在你的母版出头这样的:

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更改设置。从网址中排除languageEmbedding =“never”languageLocation =“queryString”。

    配置encodeNameReplacements(Sitecore.config): “在” 发现添加此规则

    <替换模式= = “ ”replaceWith =“ - ” >

    使用破折号代替空格。

  2. 使用canonical links

  3. your own LinkProvider你的目的

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

    例如:URL RewriteIonic's Isapi Rewrite FilterISAPI_Rewrite但是,如果您打算在CM实例上使用此模块,则需要be careful

我建议你尝试配置您的Sitecore的LinkManager提供商,encodeNameReplacement规则(在列表项1),并添加规范链接(列表中的第2项)。看起来它对你的任务来说已经足够了。

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

+0

我已经实现了自定义链接提供程序来解决语言问题,如果语言是英语,并且这很好,当我点击任何英语语言链接时,它将把用户带到没有“ EN“,但如果用户手动导航到带有语言代码的网址,则该网址将起作用。相反,它应该重定向到原始网址。这是主要问题。在这种情况下我不能使用IIS URL重写器,因为sitecore语言解析器在iis处理后即将到来。 –

+0

用短划线替换空格的问题相同。实际上我已经在项目保存/更新上创建了事件以用“ - ”替换项目名称中的空间,但是如果您的显示名称带有空格,并且您使用显示名称导航项目URL,它将起作用。所以关于我们和“关于我们”这两个将在URL –

+0

1)如果所有的链接将与配置的链接管理器和编码名称替换形成,然后搜索引擎爬虫将不知道其他链接类型。 2)如果你想精确302重定向,那么你应该将你自己的处理器添加到管道中,并在URL匹配一些规则时重定向用户。 – Anton