在每个页眉标签中实现 SEO 代码

问题描述

我需要为不同语言或地区的页面的多个版本建立索引,以便 Google 搜索在位于 Sitefinity 之上的 ASP.NET 项目页面上按语言或地区将用户指向我们页面的最合适版本。

根据 Google 文档,为了实现这一点,我需要在我们的 HTML head 标签中包含以下 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 多个页面,每个页面都有多种语言版本

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...