我发货的第一个国际网站有十一种语言版本,零hreflang,流量总的看起来还不错,所以几个月来没有人质疑,然后柏林的一位同事在google。de上搜索了我们的产品,得到了英文页面,不是德文的,德文的存在,被索引,写得比英文原版更好,google只是没有理由喜欢它,所以它服务于哪个版本的链接最多,指向它,这是我们两年来在twitter上用英文推广的那个。
That is the failure mode hreflang 存在以防止,从自己的市场内部看不见,你用自己的语言从自己的国家搜索,得到正确的页面,并得出一切正常的结论,得到错误页面的人是你从未听说过的,因为他们弹跳。
本指南涵盖了 hreflang 端到端:注释是什么、代码是如何构建的、您可以放置的三个位置、使 Google 信任它的规则以及它如何与规范标签和站点地图交互。它是一组重点片段的中心 x-默认值、 破坏实现的错误、 hreflang 与规范以及特定于框架的设置 下一个。js 並 文字出版社。
TL;博士: hreflang 标签是
rel="alternate" hreflang="xx-XX"annotation,告诉搜索引擎要为每个用户服务的是哪一种语言和某个页面的区域版本,值是一个iso 639-1语言代码,可选地加上一个ISO 3166-1 alpha-2区域代码,所以英国是GB而没有UK.注释必须是相互的:集合中的每个页面都列出了包括自身在内的每个版本,或者谷歌丢弃了集合,你可以将其实现为HTML<link>标签、XML 站点地图条目或 HTTPLink标头,但每个 URL 集只有一种方法。 hreflang 生成器 在浏览器中构建所有三种格式并在发货前验证代码。
什么是 hreflang 标签?
Hreflang标签是一个注释,声明"此页面的另一个版本存在该语言和区域,它住在这个网址。"它看起来像这样:
<link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />
从左到右阅读: rel="alternate" 说这是一个变体而不是不同的页面, hreflang="fr-CA" 说变体是针对加拿大的法语使用者,并且 href gives 绝对的 URL,这里没有什么是指令,Google 把 hreflang 视为一个强烈的暗示,说明要将哪个 URL 换成给定的搜索者,而不是它必须服从的命令,当证据指向其他地方时,它会覆盖暗示。
Google's 中定义了注释 有关页面本地化版本的文档的,而代码值来自 BCP 47、语言标签的IETF标准。Bing支持相同的注释。Yandex不使用hreflang,依赖于自己的区域设置,这对于俄语市场是否是您计划的一部分很重要。
您什么时候需要 hreflang,什么时候浪费时间?
当同一内容以多种语言存在,或者以一种语言针对多种地区时,您就需要它。对于仅针对一个市场以英文存在的网站,您不需要它,并且添加它除了添加标记之外什么也不用。
实践中出现了三种形状:
| 场地形状 | 例子 | 需要hreflang吗? |
|---|---|---|
| 一种语言,一种市场 | 仅限美国的 SaaS 营销网站 | 否 |
| 多种语言 | /en/、 /de/、 /ja/ 相同页面的版本 |
是的 |
| 一种语言,多种市场 | example.com/us/ 並 example.com/uk/,均为英语 |
是的,这是最常被遗漏的情况 |
第三行是值得暂停的一行。两个价格不同、发货副本和拼写的英文页面看起来就像爬虫的重复。如果没有 hreflang,谷歌会选择一个并过滤另一个,这就是英国商店最终在 google。co。uk 上隐形的方式,而其美国双胞胎则排名。注释告诉谷歌这些是故意的区域变体,而不是意外重复。
hreflang 代码是如何构建的?
该值有两个部分,只需要第一个部分。
的 语言 是 ISO 639-1 两个字母代码,小写: en、 fr、 de、 ja、 pt. X = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 = 1000 地区 是 ISO 3166-1 alpha-2 两个字母代码,大写,与连字符连接: en-US、 pt-BR、 de-AT。外壳是约定俗成的,而不是硬性要求,因为语言标签是不敏感地匹配的,但是当你关注它时,每个代码审查都会更快。
人们犯错的规则,按照我看到他们犯错的顺序:
- 英国是
GB。UK不是 ISO 3166-1 代码。en-UK被默默地忽略,这比错误更糟糕,因为没有什么能告诉你。 - 仅靠地区并不是一回事。 "加拿大的每个人"没有办法说出一种语言。
hreflang="CA"是无效的。你写en-CA並fr-CA作为单独的条目。 - 拉丁美洲是
es-419。 这是 UN M49 数字区域代码,在 BCP 47 中有效,当您的西班牙语针对该地区而不是专门针对西班牙或墨西哥时,这是正确的答案。 - 中国人通常想要剧本,而不是国家。
zh-Hant为传统和zh-Hans为简化描述写作系统,这是读者所关心的。zh-CN並zh-TW工作,但将脚本与地理混为一谈。 - 语言和区域是独立的轴。
en-CA並fr-CA两者都可以存在。所以可以en-US、en-GB、和en-AU。不要假设每个国家/地区一页或每种语言一页;映射您网站真正服务的组合。
的 hreflang 生成器 根据预期形状检查每个代码,并标记未识别语言或区域值的子标签,因此 en-UK 三周后,键盘失效,而不是爬行。
hreflang 标签去哪儿?
3种实现方式支持,效果相当,选择是可操作的。
| 方法 | 它住在哪里 | 最好的 | 成本 |
|---|---|---|---|
HTML <link> |
每页's <head> |
大多数站点;最容易调试 | 每页都包含全套内容,该内容会随着语言数量的增加而增长 |
XML 网站地图 xhtml:link |
网站地图条目 | 大型站点,许多地点 | 网站地图必须保持同步;被拾取的速度较慢 |
HTTP Link 标头 |
服务器响应 | PDF 和其他非 HTML 文件 | 需要服务器配置;在浏览器中不可见's 视图源 |
HTML 标签在头部:
<link rel="alternate" hreflang="en-US" href="https://example.com/us/pricing" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/uk/pricing" />
<link rel="alternate" hreflang="de-DE" href="https://example.com/de/preise" />
<link rel="alternate" hreflang="x-default" href="https://example.com/pricing" />
与站点地图条目相同的设置,需要 xhtml 声明的命名空间 <urlset>:
<url>
<loc>https://example.com/us/pricing</loc>
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/us/pricing"/>
<xhtml:link rel="alternate" hreflang="en-GB" href="https://example.com/uk/pricing"/>
<xhtml:link rel="alternate" hreflang="de-DE" href="https://example.com/de/preise"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/pricing"/>
</url>
作为 HTTP 标头,这是 PDF 的唯一选项:
Link: <https://example.com/us/whitepaper.pdf>; rel="alternate"; hreflang="en-US",
<https://example.com/de/whitepaper.pdf>; rel="alternate"; hreflang="de-DE"
URL 套装中选择一种方法,将 HTML 标签和站点地图条目混合到同一页面并不是致命的,但它给 Google 带来了两个可以渐行渐远的来源,而他们不同意的那一天你将不知道哪一个赢了,如果你已经在制作一个站点地图了 XML 站点地图生成器中,站点地图格式直接落入其中。
为什么 hreflang 必须是互惠的?
为单向主张是无法验证的,如果你的英文页面说"法文版在那边"而法文页面什么也没说,任何人都可以指向任何谷歌's规则是双方必须同意,而 返回标签要求 在其文档中明确说明:忽略不确认返回标签的注释。
Rule的实用形式比听起来简单,在组中的每个页面上都放上完整、相同的注释集,包括页面本身的自指条目,英文页面列出了英文、法文、德文、x-default,法文页面也是如此,德文页面也是如此,在所有这些块上,字节换字节。
That redundancy 是这个特性,它让集合自我验证,它让部署机械化:每个 URL 组构建一次区块,并从单一来源渲染,而不是每页手工编辑,手工编辑是一组九页最终如何得到八个正确的区块和一个缺失的条目,而一个缺失的条目足以让 Google 不信任它所属的一对。
X-默认是做什么的?
x-default name the page to service when no other entry matched the user。Something in Korean lands on a site with English, French, and Derman versions: without x-default、谷歌猜测。有了它,你就决定了,答案通常是语言选择器或你的主要国际主页。
它不是语言代码,它不取代一个,你的英文页面还需要自己的 en 或 en-US 进入,和 x-default 坐在一旁,成为包罗万象的,谷歌把它当作可选的,我也按要求对待,因为"算法挑选的东西"不是一个路由策略。的 完整的 x 默认指南 涵盖指向它的位置、当您将其指向重定向时会发生什么,以及为什么语言选择器页面需要自己维护。
hreflang 和规范标签如何交互?
他们回答不同的问题,不能相互矛盾。
规范标签说"这些几乎相同的 URL,索引这个。 " hreflang 注释说"这些 URL 是本地化的替代品,为每个用户提供正确的 URL。 "吃掉整个语言版本的失败是跨语言规范化:您的法语页面声明英语页面为规范,这告诉 Google 从索引中删除法语 URL,并且 hreflang 无法复活已规范化的 URL。
规则很短。 每个页面都自我规范化。 Hreflang描述那些自我规范页面的关系,把这两个事实弄清楚,两个系统合作;把它们交叉和更强的信号,规范,赢并悄悄删除你的翻译。 Hreflang 与规范 通过组合进行工作,包括参数-URL 情况,其中两者同时发挥作用。
如何测试 hreflang 的工作原理?
Search Console开始。国际目标报告列出了两个大规模重要的失败,"无返回标签"和"未知语言代码",遍及整个属性,这比一次检查页面时一个延迟要注意:修复只在谷歌重新绘制受影响集中的每个页面后才会出现,因此一周没有变化是正常的,也不是修复失败的证据。
然后爬取您自己的站点。任何表面有 hreflang 注释的爬虫都会向您显示每个 URL 携带的集合,并且您正在运行的检查是组中的每个页面是否携带相同的完整块。按组和眼球排序计数;五组中有四个条目的页面就是错误。
然后检查目标解析。每个 href must是返回200且可索引的绝对url,重定向的目标仍然有效但添加了跳,404s毒害集合的目标,以及目标 noindex 是矛盾:你在广告上宣传你告诉谷歌忽略的页面。
最常发生什么坏事?
按我找到它们的频率大致排列:
- 缺少返回标签。 A页指向B,B不指向后,谷歌抛弃了这对。
- 没有 x 默认值。 不匹配的用户可以获得谷歌猜测的任何版本。
- 非 ISO 代码。
en-UK线索,其次是发明的线索en-EU。 - 相对 URL。 hreflang 需要绝对的 URL、协议和包含的主机。
- 后斜杠不匹配。
/fr/並/fr是不同的URL,并且注释必须与可索引形式匹配。 - 跨语言的规范指向。 取消整套。
- 混合方法。 HTML标签和相同URL的站点地图条目,渐行渐远。
这些每一个都会产生看起来正确的标记。这就是hreflang乏味的原因:失败总是沉默的。 12个常见的hreflang错误 走过每一个,都会看到你观察到的症状和修复方法。
如何生成和维护标签?
URL 少数,手写区块一次就好,第二次就痛苦,大一点就生成。
的 hreflang 标签生成器 1行每个版本 - 一个代码和一个绝对URL - 并作为HTML链接标签,站点地图条目或HTTP头发出块它验证每个代码与ISO形状,标记未识别的子标签,捕获重复的代码,拒绝相对URL,并在集合没有x默认时警告它完全在浏览器中运行,因此您的URL结构,映射您的整个国际架构,永远不会上传到任何地方。
对于已经模板化的站点来说,更好的长期答案是从路由配置中渲染块,使其无法漂移。这就是 下一个。js 並 文字出版社 guides cover: 区域设置地图的一个真值来源,一个组件或过滤器,它使组中的每个页面都具有完整的倒数集,那么生成器就是你用来检查输出的东西,而不是用来生产它,这是一旦一个站点超过几十个网址的正确分工。
如果您同时组装技术 SEO 层的其余部分,则 元标签生成器 处理每页的标题和 robots.txt 生成器 涵盖爬行指令。 hreflang 工具指南 深入了解生成器本身。
常见问题
什么是 hreflang 标签?
hreflang 标签是 rel="alternate" hreflang="xx-XX" annotation,告诉搜索引擎要为给定用户服务的页面哪种语言和区域版本,它有助于国际网站在每个市场中对正确的版本进行排名,并阻止近乎相同的区域页面被过滤为重复。
如果我的网站只有英文,我需要 hreflang 吗?
URL分开的英语市场,只有你针对一个以上的英语市场,一个单一市场的单一英语站点不需要hreflang,单独的美、英商店,都是英文的,确实需要,因为没有注释,两者看起来像是重复的。
该区域是否需要 hreflang 代码的一部分?
No。语言代码是必需的,区域是可选的。 en 是自己有效的,不有效的是没有语言的地区:没有命名语言就没有办法针对一个国家。
hreflang 是否保证 Google 显示哪个页面?
No。Hreflang是一个强信号,而不是指令,当其他证据,如用户's显式语言设置或查询语言指向其他地方时,谷歌仍然可以提供不同的版本。
hreflang 变更需要多长时间才能生效?
Google 必须重新绘制集合中的每个页面,然后才能确认返回标签,因此更改通常需要几天到几周的时间,具体取决于您的网站被抓取的频率。搜索控制台中的国际目标报告在相同的延迟下更新。
我可以一起使用 hreflang 和规范标签吗?
是的,你应该。每个页面都自我规范化,hreflang 描述了那些自我规范页面之间的关系。将一种语言版本规范化为另一种语言版本会将其从索引中删除并取消 hreflang 集。
Bing 支持 hreflang 吗?
是的。兵也支持同样的观点 rel="alternate" hreflang 注释。yandex 不使用 hreflang,而是依赖自己的区域设置。
HTML 或站点地图中的 hreflang 标签应该去哪里?
Either works。HTML链接标签更容易调试,是常见的选择。站点地图条目保持页头精简,适合具有许多本地化的站点。每个URL集使用一种方法,而不是两者兼而有之。



