我阅读了很多有关这些主题的文章,我知道没有什么解决方案可以完美地处理多语言站点。我正在使用different folder提供不同语言的内容,因此我有www.example.com/en
,www.example.com/es
等
[当用户首次访问www.example.com
时,我从Accept-Language
HTTP标头中选择最匹配的语言,如果没有语言匹配,则使用en
版本将其重定向到最合适的页面。因此,www.example.com
处没有实际页面,它始终会生成重定向。
这对于用户和搜索引擎都非常有效,但是这种方法存在缺陷,喜欢分布在不同的语言中,我希望所有这些都适用于www.example.com
如果我将og:url
设置为根页FB爬网程序,因为它从www.example.com
开始就抱怨重定向循环,那么它将重定向到www.example.com/en
,该og:url
设置为www.example.com
。我想保持喜欢的统一,即www.example.com/es
的赞和www.example.com/en
的赞都应计入主域名。
我当前的解决方案是以这种方式修改重定向代码:当用户代理为facebook时,在请求www.example.com
时从不重定向。使用默认语言环境或语言环境requested by 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和规范性url:og:url标记不是与html中的rel ='canonical'链接相同的URL。
此设置正确吗?我会对此标记有任何疑问吗?
[Similar question,但他希望每个国家都喜欢。
出于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" />