多语言网站的规范URL和og:url

6
我阅读了很多关于这些主题的内容,我知道没有一种完美的解决方案来处理多语言站点。我正在使用不同的文件夹来为不同的语言提供内容,因此我有www.example.com/enwww.example.com/es等。
当用户第一次访问www.example.com时,我会从Accept-Language HTTP标头中选择最匹配的语言,并将其重定向到最合适的页面,如果没有语言匹配,则使用en版本。因此,在www.example.com上没有真正的页面,它总是生成一个重定向。
这对用户和搜索引擎都非常有效,但这种方法存在缺陷,即喜欢(likes)分散在不同的语言中,我希望所有喜欢都集中在www.example.com上。
如果我将og:url设置为根页面,FB爬虫会抱怨重定向循环,因为它从www.example.com转到www.example.com/en,而后者的og:url设置为www.example.com。我希望保持喜欢的统一,即www.example.com/eswww.example.com/en的喜欢都应计入主域名。
我的当前解决方案是以这种方式修改重定向代码:当请求www.example.com时,如果用户代理是Facebook,则永远不要重定向。使用默认语言环境或由FB请求的语言环境与fb_locale参数。
我还添加了本地化开放图谱标记,告诉FB我的页面有不同的语言环境。
最后,我保留了具有语言环境部分的规范URL标记,因为每种语言都以这种方式提供自己的内容,因此搜索引擎应该意识到这一点。这是首页的头部(或多或少)。
<meta content="website" property="og:type" />
<meta content="http://www.example.com/" property="og:url" />    
<meta content="en_US" property="og:locale" />
<meta content="es_ES" property="og:locale:alternate" />
<meta content="fr_FR" property="og:locale:alternate" />
<link href="http://www.example.com/en" rel="canonical" />

以这种方式,似乎一切正常,并且点赞数在所有语言之间共享。我只收到了 Facebook 调试器的警告。

og:url 和 canonical url 不匹配:头部中的 og:url 标签与 HTML 中的 rel='canonical' 链接的 URL 不同。

这个设置正确吗?这个标记会有什么问题吗? 类似问题,但他想要按国家统计点赞数。

2
警告只是一个警告。在这里,您被警告这两个值不匹配,并且应该调查一下。然而,由于您_故意_选择了这种方式,实际上不需要进一步调查。调试工具会告诉您Facebook认为哪个URL是对象的“最终”URL - 如果那是您想要的URL,那么就没有必要担心了。 - CBroe
@CBroe 谢谢。这正是我想的。您在标记中是否看到任何其他问题?例如与搜索引擎有关的问题。 - Fabio
1个回答

1

为了SEO目的,我建议使用href_lang和这些语法: 例如,在法语版本中使用fr和en语言。

<link rel="canonical" href="http://www.yourdomain.com/fr" />
<link rel="alternate" href="http://www.yourdomain.com/fr" hreflang="fr-FR" />
<link rel="alternate" href="http://www.yourdomain.com/en/" hreflang="en-US" />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接