我参与了Sitecore项目的搜索引擎优化/分析方面,并且开发人员今天获悉Sitecore将默认为给定页面创建多个实时URL,如下所示:
从SEO的角度来看,指向单个内容的4个实时网址非常糟糕,无论这些网址是否在内容中引用。有没有办法在SiteCore中的全局级别抑制此行为?试图解决它似乎涉及到301重定向,规范化等非常严厉的方法。
答案 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 :(得分: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的实例创建的。根据您的版本,可能需要稍微更改一下。您的开发人员需要使用此替换标准项目解析器并进行彻底测试,以确保它没有任何意外的副作用。