hreflang 语言码误区: 双语博客为什么在部分地区搜索排名不稳
我的博客同时有中文版和英文版. 搜索引擎靠 hreflang 标签来理解"哪个页面是中文, 哪个页面是英文". 这个声明如果含糊, 会在不知不觉中伤到搜索排名, 我一开始也没当回事, 直到排查排名问题才发现它的坑.
搜索引擎怎么知道有两个版本
同一个站, 中文和英文各一份, 搜索引擎凭什么知道它们是同一篇内容的两种语言?
靠的就是 hreflang 标签. 它长这样:
<link rel="alternate" hreflang="en" href="https://example.com/en/page/">
<link rel="alternate" hreflang="zh" href="https://example.com/zh/page/">中文页面声明"英文版在哪", 英文页面也声明"中文版在哪". 互相指认, 搜索引擎就知道这两页是同一内容的不同语言版本, 不会把它们当成重复内容互相打架.
最常见的坑: 用地区码
很多站点为了省事, 直接把语言声明写成"中文(中国大陆)“和"英文(美国)”.
<hreflang="zh-CN"> <!-- 中文(中国大陆) -->
<hreflang="en-US"> <!-- 英文(美国) -->听起来没毛病, 但问题来了: 新加坡的华人, 台湾的用户, 英国的开发者, 都既不属于"中国大陆"也不属于"美国". 他们搜东西的时候, 搜索引擎不知道该显示哪个版本. 两个版本在那些地区会互相抢排名, 结果两边都不稳定, 该有的流量白白丢了.
所以内容不分地区时, 语言声明就该用纯语言码:
<hreflang="zh">
<hreflang="en">只有当内容明确按国家区分时 (比如美版文案和英版文案不一样), 才用地区码.
还有个容易漏的: 兜底声明
当用户的语言跟站点的语言都对不上时 (比如阿拉伯语用户), 该显示哪个版本? 这是 x-default 声明负责的.
有个细节值得注意: 这个兜底答案最好全站统一. 如果中文页面说"兜底到中文版", 英文页面说"兜底到英文版", 搜索引擎会无所适从. 全站一致地指到某一个版本, 行为才稳定.
改完容易忘
hreflang 属于那种"配一次, 很久不用管"的东西. 但正因为配一次就忘, 很多人压根没意识到自己的站点还带着一个含糊的声明在跑.
这次的教训是: 博客加了多语言版本后, 如果发现排名在某些地区莫名其妙不稳, 先检查一眼语言声明. 也许问题就出在这儿.