gpt4 book ai didi

asp.net - 如何检查 Sitecore 项目是否使用别名

转载 作者:行者123 更新时间:2023-12-02 16:58:10 25 4
gpt4 key购买 nike

目前,Sitecore 中的“别名”会生成指向同一内容项的多个路由,这在某些情况下可能会对 SEO 产生负面影响。

我正在寻找一种方法来以编程方式检查当前页面/项目/URL/请求是否使用别名。

我希望会有类似的东西:

Sitecore.Web.WebUtil.IsAlias

关于如何检查别名有什么想法吗?

--------更新--------

这是我当前的解决方案,看起来效果很好......除非有人有更好的想法?:

protected bool IsAlias
{
get
{
string fullPath = LinkManager.GetItemUrl(Sitecore.Context.Item);
return !HttpContext.Current.Request.RawUrl.StartsWith(fullPath, StringComparison.OrdinalIgnoreCase);
}
}

------更新2------

这是基于 Yan 的建议的可行解决方案。我不相信 Sitecore.Context.Database.Aliases.GetTargetUrl() 从 Sitecore 6.4.1 开始工作。所以我不得不临时凑合一下。

if (Sitecore.Configuration.Settings.AliasesActive &&
Sitecore.Context.Database.Aliases.Exists(HttpContext.Current.Request.RawUrl))
{
const string format = "<link rel=\"canonical\" href=\"{0}://{1}{2}\"/>";
Item targetItem = Sitecore.Context.Database.GetItem(Sitecore.Context.Database.Aliases.GetTargetID(HttpContext.Current.Request.RawUrl));
return String.Format(format, HttpProtocol, HttpContext.Current.Request.Url.Host, LinkManager.GetItemUrl(targetItem));
}

最佳答案

我们过去所做的是使用别名来设置 canonical url页面顶部的链接。
例如,如果您有 /food别名指向/news/food当你去/food 你会放 <link href="http://[websiteurl]/news/food" rel="canonical" /> <head>页面的

编辑:

这是另一种方法

public class AliasResolver : Sitecore.Pipelines.HttpRequest.AliasResolver
{
public override void Process(HttpRequestArgs args)
{
base.Process(args);

if (Context.Item != null)
{
args.Context.Items["CanonicalUrl"] = Context.Item.GetFullUrl(args.Context.Request.Url);
}
}
}

然后在你的标题控件中你需要做的就是检查是否 HttpContext.Current.Items["CanonicalUrl"]设置并显示它。

关于asp.net - 如何检查 Sitecore 项目是否使用别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6919116/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com