六个语言版本既可能成倍扩大您的覆盖面,也可能相互竞争。区别在于几项 hreflang 与站点结构的决定,而大多数多语言网站都在悄悄地做错。
hreflang 错误简述
hreflang 最常见的错误包括:标签没有互相对应、页面没有引用自身、语言代码有误,以及标注指向了被重定向或非规范的网址。每一种错误都会削弱搜索引擎选择语言版本时所依据的信号,结果是您的德语页面与英语页面互相竞争,而不是在德语用户的搜索中取而代之。
hreflang 本身并不会提升排名。根据 Google 的文档,它的作用是告诉 Google 某个页面的哪个版本适合哪种语言或地区,以便展示正确的版本。它属于底层管道工程,出问题时悄无声息,所以六种语言的网站需要专门去检查它。
为什么多语言网站最终会自己和自己竞争
当搜索引擎无法识别 /de/ 页面就是英文页面的德语对应版本时,它看到的是两个相似的页面在争夺同样的搜索词。其中一个可能在错误的国家超过另一个,或者其中一个被当作重复内容并入另一个。柏林的访客落在英文页面上随即离开,这种行为又强化了错误的选择。问题很少出在翻译上,而出在周边的底层配置:网址、canonical 标签和彼此矛盾的标注。
规模会让情况更糟。六种语言意味着每个页面有六个版本,而每个新页面都必须与其他版本组成的集合关联起来。网站在上线时通常做得对,之后就逐渐偏离:一个只发布了四种语言的页面,会让另外两个对应版本指向空无一物,整个闭环悄然断裂,却没有任何可见的报错。
大多数 hreflang 问题背后的五种错误
第一种是缺少回指标签:英文页面列出了德语页面,但德语页面没有列出英文页面。Google 的文档指出标注必须是双向对应的,没有回指链接时可能会被忽略。第二种是缺少自我引用,因为每个页面既要列出其他版本,也要列出自己。第三种是代码错误。hreflang 使用 ISO 639-1 语言代码,后面可选地加上 ISO 3166-1 地区代码,所以 ms、ar 和 zh 有效,而 en-uk 这类自造的值,或把国家代码当语言用(例如用 cn 代替 zh)则无效。第四种是指向了错误的地址:标注需要使用返回 200 状态、且为规范版本的绝对网址,而不是重定向或带参数的变体。第五种是德语页面上的 canonical 标签指向英文页面,这等于告诉搜索引擎德语页面只是副本,使 hreflang 完全失效。
还有一个遗漏也值得补上。x-default 用来指定没有语言匹配时显示的页面,通常是语言选择页或英文根页面。它是可选的,但在六种语言的站点里,它能避免无法匹配的访客落到错误的版本。
如何在 hreflang 错误损失流量之前发现它们
先列出每个网址的声明内容。用能报告 hreflang 的工具抓取站点,导出每个页面的标注,并对每个页面检查四点:页面是否列出了自己,每个替代版本是否链接回来,每个地址是否返回 200 状态且没有重定向,canonical 标签是否指向页面自身。把语言与页面做成透视表,几分钟内就能看清缺口。
接着在 Google Search Console 中寻找症状。页面索引报告中显示为 'Duplicate, Google chose different canonical than user' 的页面,往往意味着某个语言版本被当作另一个版本的副本。最后像客户一样去测试:在普通浏览器中分别用德语、马来语、阿拉伯语、中文和土耳其语搜索您自己的品牌和服务,看看出现的是哪个版本。如果每种语言下都是英文页面排在前面,说明标注没有发挥作用。
选择一个声明 hreflang 的位置,无论是 HTML 头部、HTTP 标头还是 XML 站点地图,并保持一致。在我们自己的网站上,每个页面都带有自我引用、对其他五种语言各一个标签,以及一个 x-default,全部由构建过程中的同一份列表生成,因此新增页面时这一组关系不会跑偏。
一个品牌六种语言的六条规则
- 从同一个来源生成标签。永远不要手写 hreflang。让每条标注都来自同一份语言版本清单,这样新增页面或语言时,所有对应版本会同时更新。
- 为每种语言提供独立的网址。/de/ 或 /ar/ 这样的子目录能让爬虫抵达每个版本。通过 Cookie 或浏览器设置切换语言的页面,只会让爬虫看到其中一个版本。
- 让每个页面的 canonical 指向自身。如果德语页面的 canonical 指向英文原页,就等于告诉搜索引擎它是副本,并使您添加的 hreflang 失效。
- 本地化标题、描述和各级标题。顶着英文标题的德语页面,与德语搜索词的匹配度很弱。请按该语言用户实际输入的词来写每个标题,而不是逐字直译。
- 只标注真实存在的页面。如果某个页面没有阿拉伯语版本,就在该组标注里省去阿拉伯语,而不是重定向到首页。虚假的替代版本比缺失的更糟。
- 建议语言,而不要强制语言。Google 的文档提醒,按位置或浏览器语言自动重定向,可能使爬虫看不到所有版本。请提供一个提示横幅,让访客自己选择。
hreflang 错误:常见问题
- hreflang 能提升搜索排名吗? — 不是直接提升。它帮助正确的语言版本出现在正确的搜索者面前,从而提高相关性,并降低自家页面互相竞争的可能。
- 如果每种语言已经有独立网址,还需要 hreflang 吗? — 需要。独立网址是基础,但只有标注才能告诉搜索引擎哪些页面互为译文。没有标注,搜索引擎只能猜,而它有时会猜错。
- 应该用 zh-Hans 或 ar-SA,而不是只用 zh 和 ar 吗? — 如果每种语言只发布一个版本,就使用简单的语言代码。只有当您确实为不同受众发布不同版本时,才加上文字或地区,例如 zh-Hans 或 ar-SA。
- hreflang 应该放在哪里:页面头部、HTTP 标头还是站点地图? — 据 Google 说,三种方式都有效。选定一种并在全站统一使用。对于静态网站,放在 HTML 头部的标签最容易生成,也最容易检查。
