Sitecore自动为单个页面生成多个URL;可以抑制吗?

时间:2014-06-03 14:37:44

标签: url seo sitecore

我参与了Sitecore项目的搜索引擎优化/分析方面,并且开发人员今天获悉Sitecore将默认为给定页面创建多个实时URL,如下所示:

  • / en / section / page
  • / section / page
  • /主页/部分/页
  • / EN /主页/条/页

从SEO的角度来看,指向单个内容的4个实时网址非常糟糕,无论这些网址是否在内容中引用。有没有办法在SiteCore中的全局级别抑制此行为?试图解决它似乎涉及到301重定向,规范化等非常严厉的方法。

2 个答案:

答案 0 :(得分:5)

您对网址的评价在技术上是正确的,但我认为从不同的角度来看,可以帮助您了解更多内容以及如何处理它。

您确实可以访问" page"通过这些网址中的每个网址,Sitecore实际上会在正常情况下解析那些网址。但是,项目中的设置应该导致不是特别容易出问题。项目中LinkProvider的设置应该允许您控制如何生成链接,这可能导致仅为您的每个页面生成上述选项之一或与其相近的选项。以下代码是web.config中的链接提供程序部分:

<linkManager defaultProvider="sitecore">
  <providers>
    <clear />
    <add name="sitecore" type="Sitecore.Links.LinkProvider, Sitecore.Kernel" addAspxExtension="false" alwaysIncludeServerUrl="false" encodeNames="true" languageEmbedding="asNeeded" languageLocation="filePath" lowercaseUrls="true" shortenUrls="true" useDisplayName="false" />
  </providers>
</linkManager>

您有几个合理的选择可以确保页面的多个有效网址不会从SEO角度影响您。

  1. 使用您首选的有效路径打印规范网址,以便搜索引擎可以考虑到这一点(您可能应该这样做)。
  2. 在ItemResolver之后插入一个管道,如果通过不受欢迎的路径到达页面,将确保301重定向到正确的路径。

答案 1 :(得分:0)

来自my answer to a similar question

public class ItemResolver : Sitecore.Pipelines.HttpRequest.ItemResolver
{
    public override void Process(HttpRequestArgs args)
    {
        Assert.ArgumentNotNull(args, "args");
        if (((Context.Item == null) && (Context.Database != null)) && (args.Url.ItemPath.Length != 0))
        {
            if (Context.Domain.Name.ToLower() == "sitecore")
            {
                base.Process(args);
                return;
            }

            Profiler.StartOperation("Resolve current item.");
            string path = MainUtil.DecodeName(args.Url.ItemPath);

            Item item = args.GetItem(path);

            if (item != null)
            {
                Tracer.Info("Current item is \"" + path + "\".");
            }

            Context.Item = item;
            Profiler.EndOperation();
        }
    }
}

请注意,这是为6.x的实例创建的。根据您的版本,可能需要稍微更改一下。您的开发人员需要使用此替换标准项目解析器并进行彻底测试,以确保它没有任何意外的副作用。