开启对话

欧洲数字化

Hreflang:让德语页面从德国搜索结果中消失的标注错误

Hreflang 告诉搜索引擎,哪个页面是哪个英语页面的德语版本。标注一旦有误,引擎就会忽略它,把德语页面当作英语页面的副本。德语页面于是从德国的搜索结果里掉出去,而且没有任何错误提示。

中国 → 法国

一家公司搭建了欧洲站,把它翻译成德语、法语和西班牙语,并全部发布。几周后,德国没有人能搜到德语版本,出现在那里的却是英语版本。没有任何东西坏掉:页面能打开,文字正确,链接可用。原因通常是每个页面头部的几行代码,团队里没人去读,而引擎读得非常仔细。这个问题在那些从没运营过同一页面多个语言版本的团队所建的网站上很常见。

Hreflang 做什么,不做什么

Hreflang 是一种标注,可以放在页面头部、站点地图或 HTTP 响应里。对于某个页面,它列出其他语言、其他国家的对应页面,每个页面带一个代码:一种语言,后面可以接一个国家。当德国的某人用德语搜索时,引擎可能会把英语结果换成德语结果,因为这条标注告诉它,这是面向不同受众的同一个页面。它是一个信号,不是命令。它不负责翻译,不会让页面排得更靠前,也不会阻止页面在别处展示。它只做一件事:在已经存在、已经被收录的页面之间,选出合适的版本。

为什么页面会因此消失?因为引擎会避免展示好几个看起来一模一样的结果。发现几乎相同的页面时,它会把它们归为一组,只保留一个,称为规范页面(canonical)。一个德语页面,如果菜单没有翻译、产品名是英文、技术规格与英语页面完全相同,在引擎看来就与英语页面非常接近。Hreflang 标注正是用来证明它们面向不同受众的依据。标注无效,这个证明就被忽略。引擎保留英语页面,德语页面被归档为重复内容,而没有人会收到通知。

三种典型错误

  • 缺少回链。英语页面把德语页面列为对应页面,但德语页面没有反过来列出英语页面。Hreflang 只有在双方互相确认时才算数,所以引擎会丢弃这一对页面。每个版本都必须列出所有其他版本以及它自己,后来新增的版本,要加到每一个现有页面上,而不只是加在新页面上。
  • 代码不存在。先写语言,再写可选的国家,使用国际标准的代码。常见错误有:只写国家、不写语言;英国的字母写错;该用连字符的地方用了下划线;或者是翻译插件自己编出来的代码。无效代码会被悄悄忽略,就像那一行不存在一样。
  • 标注与规范网址相互矛盾。德语页面声明自己是德语版本,但它的规范标签却指向英语页面。两个信号说法相反,规范标签胜出:德语页面被告知它只是一个副本。当 hreflang 指向的地址会跳转到别处、返回错误或被禁止收录时,也会出现同样的情况。

其他出错的方式

还有三种情形值得一提。第一种是页面没有引用自己:每个页面都应出现在自己的列表中,许多生成工具会漏掉这一项。第二种是默认版本。一个特殊值 x-default,用来指定没有任何语言匹配时展示的页面,通常是英语页面或语言选择页;省略它不算错误,但等于把选择权留给了引擎。第三种来自按浏览器语言或 IP 地址进行的自动跳转。如果访客或引擎的抓取程序,只要从某个国家之外访问,就被送到英语页面,抓取程序就根本看不到德语页面。应当用一个可见的链接提供选择,而不是强制跳转。

如何从外部查看

  1. 打开德语页面,查看其源代码。在头部找以 alternate 一词开头并带有 hreflang 属性的几行。检查德语页面自己是否在列,您网站的每种语言是否都在,代码的拼写是否符合预期。
  2. 在英语页面上做同样的检查,确认它列出了德语页面。然后逐个访问列出的地址,检查它们能直接打开、没有跳转,并且带有同样的回链列表。
  3. 查看每个版本上的规范标签。在德语页面上,它应当指向这个德语页面本身,而不是英语页面。
  4. 在提供给站长的免费搜索工具中,检查德语地址。如果报告显示该页面是重复页面,且引擎选择了与您不同的规范网址,那您就找到了原因。
  5. 在效果报告中,按德国和德语页面筛选。如果本应属于德语页面的展示次数被英语地址拿走了,说明替换没有生效。
您看到的现象可能的原因首先检查什么
英语页面出现在德国的搜索结果中标注被忽略;页面被归为重复内容两个版本上的回链
德语页面被报告为重复页面规范标签指向英语页面德语页面上的规范标签
标注存在但没有效果代码无效,或地址会跳转代码的拼写;每个地址能否直接打开
德语版本从未被抓取按语言或国家的自动跳转不经跳转直接访问德语地址

按合理的顺序修复

先改规范标签,因为错误的规范标签会让其他一切作废。然后处理列表本身:让它由一个您理解的模板或插件生成,而不是在每个页面上手工填写,因为一旦新增页面,手工列表就会彼此脱节。从同一个来源生成完整的页面对,涵盖每一个页面,而不只是首页。然后取消按语言的自动跳转。最后重新提交站点地图并等待:引擎要把这一组里的每个页面都重新抓取一遍,才会信任新的信号,需要多久取决于网站的规模和被访问的频率。只翻译了一部分的网站,应当只链接那些在每种语言里确实存在的页面。

Hreflang 修复不了糟糕的翻译。如果德语页面是机器翻译、菜单还是英文,引擎仍然看不出它与英语页面有多大差别,落到这个页面上的买家看到的也一样。先修标注,因为只需要几个小时,然后诚实地判断这个页面是否值得展示给德国买家。一个您不会转发给客户的页面,就不该是您请引擎优先选用的那一个。

常见问题

应该只用语言代码,还是语言加国家?

一个页面服务所有讲这种语言的国家时,只用语言;页面确实因市场而异时,再加上国家,比如价格、配送、法律页面、词汇。如果信息不同,为德国准备一个德语页面、为奥地利另备一个,是有道理的;如果信息相同,一个德语页面更简单,也避免了两个几乎相同的副本。不要单独使用国家,因为标注总是以语言开头。无论怎么选,都要在每个页面、每种语言上用同样的方式,并保留一张全团队都能读懂的页面对照表。

Hreflang 能帮我们在德国排得更靠前吗?

不能。它决定展示您自己的哪个页面,而不是页面排多高。一个标注正确但内容单薄的德语页面,仍然会排在竞争对手更好的德语页面后面。Hreflang 防止的是另一种情形:您的德语页面被当作副本搁置,从而根本没有机会参与竞争。排名本身仍取决于文字的质量、与买家搜索内容的匹配程度,以及来自德国、指向网站的引用。把 hreflang 当作基本卫生:它消除一个劣势,除此之外不会再增加什么。

我们的网站使用翻译插件。hreflang 是不是已经自动处理了?

往往只处理了一部分,不能想当然。有些插件能正确生成标注;有些只对部分页面类型生成,有些加入的代码与标准不符,还有些在显示的时刻才翻译页面,于是引擎根本看不到独立的德语地址。请查看每种类型页面的源代码来核实:首页、分类页、产品页、文章页。如果插件只在浏览器里加载译文,引擎可能只收录英语页面,那时就没有什么可标注的了。这种情况下,解决办法是结构性的,为每种语言建立真实的地址,而不是改一个设置。