1次输给hreflang一个稳固的下午,一个客户有一个英文和法文的网站,分开 /en/ 並 /fr/的,而且他们的法语页面根本不会在法国排名- 谷歌不断地将英文版本浮出水面给法国搜索者,标记看起来是正确的,它在头部,代码在那里,URL解决了问题,事实证明,英文页面指向法国的,但法国的页面没有指向后退,Hreflang必须是互惠的,谷歌因为返回标签丢失而将整个集群扔掉,浏览器中没有任何东西告诉我,没有错误,没有警告- 只是页面悄悄地未能在他们应该排名的地方排名。
That is hreflang in a numshell。概念很简单:告诉搜索引擎哪种语言和区域版本的页面来显示哪些用户。执行是一个雷区ISO代码, 外壳约定, 互惠规则, 和一个后备标签一半的互联网忘记了。我建立和维护多语言网站足够经常 - 跨工具z。dev, WP管理's文档, 以及各种Laravel和React项目 - 我想要一个工具, 生成标签, 抓住错误之前, 他们发货。那就是 Hreflang 生成器并且这份指南是我希望那天下午知道的一切。
对于概念而不是工具,请从开始 hreflang 标签解释道它是此主题的中心,并链接到相关文章 x-默认值、 常见的 hreflang 错误的,以及框架设置 下一个。js 並 文字出版社。
TL;博士: hreflang 标签告诉搜索引擎要为每个用户提供页面的哪种语言/区域版本,使用
rel="alternate" hreflang="x"注释。代码遵循 ISO 639-1(语言)和 ISO 3166-1(地区)--因此英国是这样GB不是UK。标签必须是互惠的(每个页面都链接回来),并且您应该包含一个x-defaultfallback。generator输出有效的标签作为html链接,xml站点地图条目或http标头,验证每个代码,捕获重复,并在浏览器中100%运行。
什么是 hreflang 标签?您什么时候需要它们?
Hreflang标签是一个注释,它说"这个页面有另一个版本,用于特定的语言和区域,这里是它的URL。"语法是 <link rel="alternate" hreflang="fr-CA" href="https://example.com/fr-ca/" />,在哪里 fr-CA means French as placed in Canada,当谷歌理解这些关系时,它可以为加拿大的法语使用者提供加拿大法语页面,为美国的某个人提供美国英语页面,而不是猜测或默认它碰巧先爬取哪个版本。
Hreflang时,只要你有实质上相同的内容在多于一种语言,或相同的语言针对多于一个地区,一个博客只存在于英语中不需要它,一个SaaS营销网站翻译成六种语言绝对是中间情况 - 一种语言,多个地区,就像单独的美国和英国商店都是英语 - 是hreflang最有价值和最被忽视的地方,因为页面看起来像重复的谷歌,除非你明确声明它们是地区变体。
收益是双重的。首先,正确的版本在正确的市场中排名,这提高了点击率和转化率,因为用户落在适合他们的价格、货币和措辞上。其次,hreflang 解决了重复内容问题:谷歌没有将近乎相同的区域页面相互竞争和蚕食,而是将它们视为一组替代品,并选择每次查询的最佳拟合度。
为什么代码会绊倒所有人?
因为它们遵循标准,而不是直觉,而且标准有边缘情况。
这些值是 BCP 47 语言标签,定义于 RFC 5646还有谷歌'自己的 本地化版本文档 是它接受子集的权威。
语言部分是 ISO 639-1 代码:两个字母,小写,类似 en、 fr、 de、 ja。可选区域部分是ISO 3166-1 alpha-2代码:两个字母,大写,喜欢 US、 GB、 DE。将它们与连字符放在一起,您就会得到 en-US 或 de-DE。咬人的惯例:
- 的 英国是
GB不是UK。UK不是有效的 ISO 3166-1 代码,并且en-UK是禁食。 - 语言第一,是强制性的;区域是可选的,不能独立存在。 你不能瞄准
US本身就没有区域专用 hreflang 这样的东西。它始终是语言,可以选择按区域缩小。 - 拉丁美洲使用 UN M49 代码、
es-419的, 因为它跨越了很多国家而不是一个, 这个三位数的区域代码对于"西班牙语, 拉丁美洲品种有效和有用。" - 中文通常需要脚本子标签的,像
zh-Hant(传统)或zh-Hans(简体),因为书面形式比国家更重要。
Generator 验证所有这些。它会根据预期的形状检查每个代码,规范化外壳(小写语言、大写区域、标题大小写脚本),并在子标签不是公认的 ISO 语言或区域时警告您 - 所以 en-UK 在浪费爬行之前被标记。
如何使用 Hreflang 生成器?
该工具围绕语言版本列表和输出格式选择构建。
第 1 步 - 添加您的版本。 每行都是一个语言/区域代码加上该版本的完整 URL。快速选择列表提供了常见代码(en-US、 es-419、 zh-Hant、 x-default的,(以及更多),所以你不必记住确切的外壳。每个版本添加一行。
步骤 2 - 包括 x 默认值。 用代码添加一行 x-default 指向您的后备 URL。这是为您未明确瞄准其语言的用户提供的版本 - 通常是语言选择器页面或主要主页。
第 3 步 - 选择格式。 HTML 之间切换 <link> 页首的标签, xhtml:link XML 站点地图或 HTTP 的条目 Link header for non-HTML 文件。在您编辑时, 生成器会验证每个代码和 URL, 捕获重复的代码, 并显示每行状态表, 这样您就可以一目了然地看到哪些条目是有效的。
4步 - 复制和相互部署。 Copy输出和-这是重要的部分-在组中的每个URL中添加相同的完整标签集,包括一个自我参照条目。然后用谷歌搜索控制台中的国际目标报告确认设置。
Everything都运行客户端,所以你的URL结构- 可以暴露你的整个国际架构- 永远不会离开浏览器,那是站点上每个工具背后相同的隐私模型,覆盖在 数据隐私指南。
每种格式的输出是什么样的?
Here是工作例子而不是描述, 卖到美国、英国、法国和拉丁美洲的店, 以语言选择器页面为后备, 五行进去:
| hreflang | 网址 |
|---|---|
x-default |
https://example.com/ |
en-US |
https://example.com/us/ |
en-GB |
https://example.com/uk/ |
fr-FR |
https://example.com/fr/ |
es-419 |
https://example.com/latam/ |
请注意输出前该集的两件事。 en-US 並 en-GB 两者都是英语,仅因市场而异,hreflang 的情况就是如此,大多数网站都跳过了。和 es-419 是拉丁美洲的 UN M49 区域代码,该工具接受该代码有效而不是标记,因为三位数区域在语言标签中是合法的,即使它不是 ISO 3166-1 alpha-2 代码。
HTML 链接标签,对于页面 <head>:
<link rel="alternate" hreflang="x-default" href="https://example.com/" />
<link rel="alternate" hreflang="en-US" href="https://example.com/us/" />
<link rel="alternate" hreflang="en-GB" href="https://example.com/uk/" />
<link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<link rel="alternate" hreflang="es-419" href="https://example.com/latam/" />
这个确切的块出现在所有五个页面上,没有变化。不是"其他四个"在每个页面上:所有五个,包括页面'自己的条目。这就是注释相互的原因。
XML 站点地图条目的,其中工具将相同的集合包裹在 a 中 <url> 元素并使用您的页面 URL 作为 <loc>:
<url>
<loc>https://example.com/us/</loc>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/" />
<xhtml:link rel="alternate" hreflang="en-US" href="https://example.com/us/" />
<xhtml:link rel="alternate" hreflang="en-GB" href="https://example.com/uk/" />
<xhtml:link rel="alternate" hreflang="fr-FR" href="https://example.com/fr/" />
<xhtml:link rel="alternate" hreflang="es-419" href="https://example.com/latam/" />
</url>
生成器会提醒您居住在它可以产生的块之外的部件: <urlset> 元素需要声明的 xhtml 命名空间,或者每个 xhtml:link 当文件仍然作为站点地图验证时,条目将被忽略。
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
xmlns:xhtml="http://www.w3.org/1999/xhtml">
HTTP 链接标头、没有的文件的单个标头值 <head> 要编辑,例如 PDF:
Link: <https://example.com/>; rel="alternate"; hreflang="x-default", <https://example.com/us/>; rel="alternate"; hreflang="en-US", <https://example.com/uk/>; rel="alternate"; hreflang="en-GB", <https://example.com/fr/>; rel="alternate"; hreflang="fr-FR", <https://example.com/latam/>; rel="alternate"; hreflang="es-419"
从设计上来说,这是一条长线:一条 Link 携带逗号分隔值的标头。在 nginx 中,那就是一个 add_header Link "..."; 指令;在阿帕奇一号 Header set Link "...".分隔若干 Link headers 也可以,但将其保留为一个值会使集合明显完整。
发【生】机's警告是什么意思?
该工具将阻止条目被发射的错误与警告分开,警告可以让它通过,但会标记您应该查看的内容。区别很重要,因为大多数 hreflang 错误都是法律标记,毫无意义。
| 带信息 | 是什么触发了它 | 做什么 |
|---|---|---|
| 不是有效的语言标签 | 该值不匹配 language[-Script][-REGION] |
首先使用语言代码、区域可选或字面 x-default |
| 语言子标签不是常见的 ISO 639-1 代码 | 格式良好但未被认可的语言 | ISO 639-1进行检查;标签以任何一种方式发出 |
| 区域子标签不是常见的 ISO 3166-1 代码 | 结构良好但未被认可的区域 | 这就是捕获的 en-UK,在哪里 GB 是正确的 |
| 重复 hreflang | 相同的代码在集合中出现两次 | 删除一个;一个代码的两个条目是一个矛盾 |
| 没有 x 默认设置 | 该集合没有后备行 | 在选择器页面或主要版本添加一个指向 |
| hreflang 在集群中工作 | 该集合中只有一个 URL | 添加其他语言版本;单条目集群什么也不做 |
| hreflang 必须是互惠的 | 始终显示 | 将相同的块部署到组中的每个 URL |
最后一个总是显示而不是有条件的,因为它是客户端工具无法检测到的故障。互惠是其他页面的属性,而不是您面前集合的属性,因此生成器陈述规则而不是假装验证规则。这里的每一个其他警告都是它可以真正检查的东西。
另请注意,代码是规范化的,而不是在外壳上被拒绝: EN-gb 变成 en-GB、 zh-hant 变成 zh-Hant。语言标签不敏感地匹配大小写,因此外壳是约定的,但一致的输出使两页之间的差异可读。
我应该选择哪种输出格式?
Google 接受三种实现方式,正确的取决于你的堆栈和页面数。
| 方法 | 最好的 | 权衡 |
|---|---|---|
HTML <link> 标签 |
大多数网站;每页直接控制 | 为每个页面增加权重's head;必须出现在每个页面上 |
XML 网站地图 xhtml:link |
大型站点;保持 HTML 清洁 | 需要维护站点地图; Google 处理速度较慢 |
HTTP Link 标头 |
PDF 等非 HTML 文件 | 需要服务器配置;更难审计 |
对于典型站点, HTML 链接标签 是最直接的- 你在源头中看到它们,它们很容易调试,每个框架都可以渲染它们。为 具有数百种语言变体的大型网站将 hreflang 放入 XML 网站地图 保持页首精简并将注释集中在一个文件中(记住添加) xmlns:xhtml="http://www.w3.org/1999/xhtml" 到 <urlset> 元素,该工具提醒您)。 HTTP 标头 方法很小众,但对于 PDF 等非 HTML 资源至关重要,因为 PDF 没有头可以放入链接标签。
Pick哪一个,每组页面只用一种方法,混合HTML标签和相同URL的站点地图条目可以发送Google冲突信号,如果已经在生成站点地图,工具's站点地图格式直接从输出中插槽 XML 站点地图生成器。
什么是 x 默认值以及为什么它很重要?
x-default 是hreflang值,它为任何用户指定一个后备页面,您的语言或地区没有明确针对,如果您的网站有英语,法语和德语版本,有人浏览日语到达, x-default google 告诉他们要在哪里发送- 通常是一个中立的主页或者一个可以让他们选择语言的页面。
Hreflang没有它的情况下工作的意义上是可选的,但谷歌建议将其包括在内,我在实践中将其视为强制性的。如果没有x默认值,无与伦比的用户将获得谷歌猜测的最接近的版本,这通常只是你爬取最多的页面,而不是故意的选择。
为工具's部分:一套没有 x-default row 提出警告而不是错误,所以你仍然可以复制输出,但是你将被告知,添加行,后备弹以你选择的三种格式中的哪一种发出,在每个页面上的相同位置指向它,以及使它无用的错误,都包含在 x-默认指南。
为什么 hreflang 必须是互惠的?
这是我花了一个下午的时间,所以它有自己的部分。 Hreflang 注释必须是互惠的。 A页声明B页为法语备选,则B页必须声明A页作为回报,Google只在双方确认时才信任关系,如果缺少返回标签,Google完全忽略注释- 默默地,页面上没有错误。
满足这一点的干净方法是在组中的每个页面上放置完整的、相同的 hreflang 标签集,包括一个自我指向的条目(指向自身的页面)。所以在你的 en-US 页面,您包含标签 en-US、 en-GB、 fr-FR、 de-DE、和 x-default - 并且完全相同的块出现在 en-GB 页,the fr-FR page,以此类推,集群中的每一页都承载着整个地图,感觉多余,但却是让注释相互的,也是谷歌所期望的。
这就是为什么生成标签只是第一步。 免费 hreflang 生成器 product 完整的块让你在集群中重用,它提醒你关于它的警告中的互惠性,但是部署纪律 - 相同的块,每个页面 - 在你。正确地获取该和代码正确,hreflang 悄悄地工作,可靠地获取错误,它同样悄悄地失败。为了组装技术 SEO 堆栈的更广泛背景,我收集了相关的实用程序在 web开发人员工具包概述。
如何测试 hreflang 是否有效?
部署后,与验证 国际目标报告 (历史上称为hreflang报告)在谷歌搜索控制台。它列出了错误,如"无返回标签"和"未知语言代码"贯穿您的整个网站,这远远快于检查页面一个一个的搜索引擎优化审核工具的爬行,也会确认每个页面都携带完整的倒数集。
我最常看到的错误,按频率的粗略顺序排列: 缺少返回标签 (上面的互惠失败), 无 x 默认值、 使用 UK 代替 GB 或其他非ISO代码, 仅区域标签 这试图针对一个没有语言的国家, 相关 URL hreflang 需要绝对的,并且 混合实施方法 对于相同的页面。这些中的每一个都会产生看起来合理且无所作为的标记。
的 hreflang 标签生成器 是为了抓住机器可以捕获的那些 - 格式错误的代码,未知的子标签,重复,非绝对URL,以及缺失的x-default - 并提醒您它不能为您强制执行的那些,即互惠的完整目录,以及每个都产生的症状,在 12个常见的hreflang错误。 如果您将 hreflang 连接到更大的多语言版本中,则 元标签生成器 处理每页头部的其余部分,并且 编码工具指南 完善开发人员工作流程。
您应该计划哪些边缘案例?
一旦基本知识到位,就会经常出现一些情况来进行规划。 规范标签和 hreflang 必须同意。 每个页面's canonical 应该指向自己,而不是指向不同的语言版本 - 如果您的法语页面规范化为英语页面,您告诉 Google 完全删除法语页面,这会抵消您刚刚添加的 hreflang。保持规范在语言集群内的自我指涉,并让 hreflang 描述集群之间的关系; hreflang 与规范 通过组合工作。
语言和国家是独立的轴。 拥有是完全有效的 en-US、 en-GB、和 en-CA 所有这些都是英文的,但针对不同的国家,并且同样有效 fr-CA 並 en-CA 2者都以不同的语言瞄准加拿大,不要假设每个国家/地区有一个页面或每种语言一个页面;您正在映射您的网站实际服务的特定组合。
尾随斜杠和协议必须与您的真实 URL 匹配。 hreflang 指向确切的 URL,因此 https://example.com/fr/ 並 https://example.com/fr 是不同的目标。使用每个url的规范的、可索引的形式- 你会在站点地图中提交相同的url- 所以注释解析为实时页面而不是重定向。hreflang目标中的重定向不是致命的,但它增加了跳跃和信号减弱的机会,因此值得精确获取。
常见问题
什么是 hreflang 标签?
Hreflang标签告诉搜索引擎显示给定用户的页面哪种语言和区域版本,它使用rel="替代"hreflang="x"注释,其中x是语言代码(可选地带有区域),因此可以在墨西哥为讲西班牙语的人提供您的es-MX页面而不是您的英语页面。Hreflang帮助国际网站避免重复内容问题,并在每个市场中对页面进行排名。
正确的 HREFLANG 格式是什么?
ISO 639-1语言代码的值,可选地后跟一个区域作为ISO 3166-1 alpha-2代码- 例如en,en-GB,或pt-BR。语言为先,区域是可选的;不能单独针对一个区域。注意标准不同于日常缩写:英国是GB,而不是UK。
hreflang中的x默认是什么意思?
x-default 指定您尚未明确定位的语言或区域的用户的后备页面。 它通常是您的主页或语言选择器页面。 谷歌建议在每个 HREFLANG 集中包含一个 X-default,以便将无与伦比的访问者发送到某个合理的位置,而不是随机语言版本。
我应该把 hreflang 标签放在哪里?
HTML头中的标签,作为链接rel="替代",或者作为HTTP链接头(对PDF这样的非HTML文件有用),你可以在三个地方实现hreflang。选择一种方法并一致地应用它 - 将它们混合到相同的页面可以发送冲突的信号。该工具生成所有三个。
hreflang 标签必须是互惠的吗?
是如果A页声明B页为它的法语备选,则B页必须声明A页作为回报,谷歌忽略了hreflang注释,这些注释没有被他们指向的页面上的返回标签所证实,最简单的方法是在组中的每个页面上包含完整的、相同的hreflang条目集 - 包括一个自我参照的条目。
hreflang 标签可以修复跨区域的重复内容吗?
Hreflang 不会删除重复的内容,但它告诉 Google 类似的页面是彼此的区域或语言变体,而不是重复的内容来过滤。 这有助于正确的版本在每个市场中排名,而不是相互蚕食的页面。 对于真正相同的页面,将 Hreflang 与每个指向自己的正确规范标签相结合。
如何测试 hreflang 是否有效?
使用 Google Search Console 中的国际定位(或 HREFLANG)报告,其中列出了诸如丢失退货标签和未知语言代码等错误。 您还可以使用 SEO 审核工具抓取网站,以确认每个页面都包含完整的互惠集。 修复可能需要时间来反思,因为 Google 必须重新抓取组中的每个页面。
我的数据是否保密?
是的。 标记完全在您的浏览器中使用纯 JavaScript 生成。 您的 URL 和站点结构永远不会传输、记录或存储,并且在页面加载后,生成器将在没有网络连接的情况下继续工作。



