Hreflang 是一个 HTML 属性,它告诉搜索引擎哪些网站页面是彼此的翻译,以及每个版本是为哪种语言或地区设计的。 简单来说:它是一种告诉 Google 和 Yandex “这个页面是俄语的,适用于俄罗斯,而这个页面是德语的,适用于德国,不要将它们相互替换显示”的方式。
如果没有 hreflang,多语言网站会将版本选择权交给搜索引擎。如果不同语言的页面具有相同的结构和含义,搜索引擎可能会将它们视为重复页面,并且只在搜索结果中保留一个——通常不是用户需要的那个。正确配置的 hreflang 消除了这种不确定性,并将版本分配到不同的语言和区域搜索结果段。
什么是 hreflang 以及为什么需要它
hreflang 是 rel="alternate" 链接属性,它告诉搜索引擎哪些 URL 是当前页面的语言或区域变体。
如果没有 hreflang,搜索引擎可能会:
- 向德国用户显示俄语版本
- 将翻译视为重复内容并将其合并为一个文档
- 不在相应的本地搜索结果中显示区域版本
通过hreflang,搜索引擎知道:这是德国的德语页面,这是法国的法语页面,这是其他所有地区的英语页面。它允许您为同一语言但不同地区设置不同版本,并为同一国家指定多种语言——例如,加拿大的英语和法语(en-CA和fr-CA)。这对于本地化很重要:在加拿大,即使是法语页面,价格也以加元显示,而在法国则以欧元显示。
hreflang 的外观
该属性被添加到每个页面的 <head> 部分:
<link rel="alternate" hreflang="ru" href="https://mysite.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://mysite.com/en/about/" />
<link rel="alternate" hreflang="de" href="https://mysite.com/de/about/" />
<link rel="alternate" hreflang="x-default" href="https://mysite.com/en/about/" />关键部分:
- rel="alternate" — 表示这是页面的替代版本
- hreflang="ru" — 根据 ISO 639-1 的语言代码
- href — 版本的完整绝对URL(带协议和域名)
- hreflang="x-default" — 默认版本,如果没有其他版本适用
表格:常用语言和地区代码
属性格式:语言或语言-国家。以下是经常出错的代码:
只有当同一语言的内容在不同地区有所不同时,才添加国家代码。
- 仅语言 — hreflang="en" — 适用于所有英语用户,无论国家如何
- 语言 + 国家 — hreflang="en-US" 适用于美国,hreflang="en-GB" 适用于英国 — 例如,美元价格与英镑价格
- 如果内容对所有母语使用者都相同,则仅使用语言代码而无需国家代码
互惠性:最常被违反的规则
每个页面都应包含指向所有语言版本的hreflang,包括其自身(自引用)。这是一条关键规则:如果您的网站有三种语言,则每个版本都必须链接到所有三种语言,包括其自身。这创建了一个封闭的链接集,搜索引擎通过它了解版本之间的关系。
正确:俄语页面包含指向德语、英语和其自身的链接。德语页面包含指向俄语、英语和其自身的链接。英语页面包含指向俄语、德语和其自身的链接。
错误:俄语和德语版本有指向英语版本的链接,但英语版本没有反向链接。搜索引擎认为这种实现不正确,可能会忽略整个集合。
<!-- 正确的 hreflang 集合示例 -->
<link rel="alternate" hreflang="de" href="https://mysite.com/de/about/" />
<link rel="alternate" hreflang="ru" href="https://mysite.com/ru/about/" />
<link rel="alternate" hreflang="en" href="https://mysite.com/en/about/" />
<link rel="alternate" hreflang="x-default" href="https://mysite.com/en/about/" />x-default:其他版本
hreflang="x-default" — 是一个特殊值,用于当没有其他版本适合用户时显示的页面。这通常是网站的主要语言版本(通常是俄语或英语)。
如果您的网站有俄语和哈萨克语版本,但没有英语版本,x-default 可以指向其中一个版本——或者根本不使用。这不是一个强制属性,但 Google 推荐使用。
实现方式
除了 <head> 中的标签,hreflang 还可以通过以下方式指定:
通过 HTTP 标头。对于 PDF 和其他非 HTML 资源,这是唯一的选择。
通过站点地图。不是在每个页面上使用属性,而是一个站点地图,其中每个链接都列出了该页面在其他语言中的变体。这对于 Google 上的大型网站很方便。
所有选项对 Google 来说都是等效的——选择最容易维护的那个。顺便说一句,Multify 会自动将所需的元标签添加到页面的 HTML 代码和站点地图中。
重要区别:Google 和 Yandex 处理 hreflang 的方式不同
大多数关于hreflang的俄语指南只考虑了Google——而对于面向俄罗斯和独联体国家的网站来说,这只是一半的情况。
- Google支持所有三种标记方式:中的HTML标签、HTTP头和XML Sitemap中的hreflang。
- Yandex 已停止通过 XML Sitemap 支持 hreflang。为 Yandex 指定语言和区域版本的唯一可靠方法是直接在每个页面的 <head> 中使用 HTML 标签 <link rel="alternate" hreflang="...">。
实际结论:如果您在 Yandex(俄罗斯、哈萨克斯坦、白俄罗斯)有受众,请不要依赖站点地图实现——它适用于 Google,但在 Yandex 中无效。<head> 中的标签是唯一在两个系统中都同样有效的选项。