c# - 在每个页面标题标签中实现 SEO 代码
问题描述
我需要为不同语言或地区索引页面的多个版本,以便 Google 搜索在 Sitefinity 之上的 ASP.NET 项目页面上按语言或地区将用户指向我们页面的最合适版本。
根据 Google 文档,为了实现这一点,我需要在我们的 HTML 头标签中包含以下 html 代码。
<'link rel="alternate" hreflang="lang_code" href="url_of_page" />
例如,对于下面的 ABC 页面,我们有多种语言版本,如下所述,我们使用英语作为默认语言,因此要在 Google 搜索中索引此页面,我们需要在 Head 标记中附加以下代码:
<HEAD>
<TITLE>
ABC
</TITLE>
<link rel=alternate" hreflang="de" href="http://www.NNN.co/de/ABC" />
<link rel=alternate" hreflang="fr" href="http://www.NNN.co/fr/ABC" />
<link rel=alternate" hreflang="x-default" href="http://www.NNN.co/en/ABC" />
</HEAD>
因此,为了实现这一点,我在 Global.asax.cs 文件中使用了以下代码。
protected void Application_Start(object sender, EventArgs e)
{
_log.Info("Application starting.");
ObjectFactory.Initialized += ObjectFactoryInitialized;
Bootstrapper.Initialized += Bootstrapper_Initialized;
Bootstrapper.Initialized += BootstrapperInitialized;
// NOTE: Telerik | use this event as a later one compared to the Bootstrapper_Initialized
Bootstrapper.Bootstrapped += BootstrapperBootstrapped;
MiniProfiler.Settings.PopupRenderPosition = RenderPosition.Right;
ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls | SecurityProtocolType.Tls11 |
SecurityProtocolType.Tls12 | SecurityProtocolType.Ssl3;
RegisterBundlingContexts();
}
private void Bootstrapper_Initialized(object sender, Telerik.Sitefinity.Data.ExecutedEventArgs e)
{
if (e.CommandName == "Bootstrapped")
{
EventHub.Subscribe<IPagePreRenderCompleteEvent>(this.OnPagePreRenderCompleteEventHandler);
}
}
private void OnPagePreRenderCompleteEventHandler(IPagePreRenderCompleteEvent @event)
{
var page = @event.Page;
//CultureInfo DefaultCulture = CultureInfo.CurrentUICulture;
var siteDefaultCulture = SystemManager.CurrentContext.CurrentSite.DefaultCulture ;
var pageSiteNode = SiteMapBase.GetActualCurrentNode();
var pageManager = PageManager.GetManager();
var pageNode = pageManager.GetPageNode(pageSiteNode.Id);
var publishedTranslations = pageNode.GetPageData().PublishedTranslations;
var googleLinks = new StringBuilder();
foreach (var culture in publishedTranslations)
{
var cultureInfo = new CultureInfo(culture);
string url = HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute(pageNode.GetFullUrl(cultureInfo, false, true));
googleLinks.AppendLine($@"<link rel=""alternate"" hreflang=""{culture}"" href=""{url}"" />");
}
googleLinks.Replace($@"hreflang=""{siteDefaultCulture}""", $@"hreflang=""x-default""");
page.Header.Controls.Add(new LiteralControl(googleLinks.ToString()));
}
但是有些它是如何不起作用的,而且我已经投入了大量时间使用这种方法,所以有没有更简单的方法可以做到这一点。
注意:我们有 100 多个页面,每个页面都有多个语言版本
解决方案
推荐阅读
- leaflet - 如何将leaflet.markercluster 插件添加到我的代码中?
- glib - g_signal_connect 调用中的“通知”是什么意思?
- python - GRU 模型,accuracy 和 val_accuracy 始终为 0.0000e+00
- mysql - CONCAT 和 INNER JOIN - 使用查找表进行一对多关系
- image - 使用 Java 和 iCAFE 更新元数据
- wso2 - WSO2 EI 6.5.0 - 使用 AWS SQS 时出现 NHTTP 协议冲突错误
- excel - 根据给定的组合框的特定值添加数据?
- r - 重复函数以查找多个数据列的描述性统计信息
- azure-devops - Azure Devops Pipeline NPM 审计
- c# - 有没有办法在对象过期时得到通知?