hreflang 是一种标注,它告诉搜索引擎页面的哪个版本属于哪一类受众。用对了,法语读者会落在法语页面上,而不是英语页面上。用错了,引擎会忽略整组标注,而这正是最常见的结果:这个标注既容易写,也容易写坏。
Sorank hreflang 标签生成器会根据您提供的网址清单生成完整的代码块,代码经过校验,x-default 也已处理妥当。
会让整组标注失效的规则
- 标注必须互相引用。如果英语页面指向法语页面,法语页面也必须指回英语页面。单向引用会被丢弃。
- 每一组都必须包含自己。每个页面都要列出全部版本,包括它自己。
- 代码遵循标准,而不是凭直觉。语言代码来自 ISO 639-1,地区代码来自 ISO 3166-1 alpha-2。语言在前,地区在后,单独的地区代码永远无效。
- 只能有一个 x-default。它标记的是没有其他版本与访客匹配时应当提供的页面。
- 网址必须是绝对地址,并且是 canonical 地址。指向一个随后会跳转的网址,或者指向一个 canonical 写着另一个地址的页面,都会让标注失效。
代价最高的错误
- 把国家代码当成语言代码:
uk不是英语,而是乌克兰语。英国对应的是en-GB。 - 指向错误的协议或主机:在同一组里混用 http 和 https,或者混用 www 和非 www。
- 给彼此并非译文的页面加标注,例如一种语言的分类页和另一种语言的文章页。
- 在有语言选择器的站点上忘记 x-default,这会让引擎自己猜测该给未匹配的访客显示什么。
标签放在哪里
三种位置都有效,用其中一种就够了。放在每个页面的 head 里,作为 link 元素,这是最常见的做法。放在 HTTP 响应头里,这是 PDF 和其他非 HTML 文件的选择。或者放在 XML sitemap 里,这能让大型站点更好管理,因为整组标注集中在一个文件里,而不必在每个页面上重复。
无论选哪一种,都要始终如一地使用。在一个站点里混用不同位置,是让各组标注互相矛盾的可靠办法。
发布之后
请从线上页面而不是源文件来检查标注,因为模板和边缘规则常常会改写网址。然后观察每个市场的结果中实际出现的是哪个版本。hreflang 是关于显示哪个版本的提示,而不是排名指令:它不会让一个页面在本来没有理由获得排名的国家里排上去。

























