hreflang 是多语言、多地区网站最重要的技术标注之一,它告诉搜索引擎:这个页面还有哪些语言或地区版本,各自面向谁。设置正确时,西班牙用户在 Google 上看到的是西语页面,英国用户看到的是英式英语页面;设置错误时,语言版本错乱、页面互相竞争的情况就会出现。本文讲清这一标注的写法、部署方式和常见错误。
hreflang 解决什么问题
当网站有多个语言或地区版本时,这些页面内容高度相关,有时甚至几乎相同(例如美国版和英国版的英文页面)。如果没有明确标注,搜索引擎需要自己判断该给哪个用户展示哪个版本,容易出现以下情况:
- 德语用户在搜索结果中看到英文页面;
- 面向不同地区的同语言页面被当作重复内容处理;
- 不同语言版本之间的排名信号没有被正确关联。
这一标注并不会直接提升排名,它的作用是帮助搜索引擎在已收录的页面中,为不同语言和地区的用户选出合适的版本。需要说明的是,谷歌支持该标注;必应对它的支持有限,更多参考 content-language 等其他信号,因此面向必应的站点也要确保页面的 html lang 属性准确。
语言与地区代码怎么写
标注值由语言代码和可选的地区代码组成:
- 语言代码使用 ISO 639-1 格式,例如
en、zh、es、vi; - 地区代码使用 ISO 3166-1 Alpha-2 格式,例如
US、GB、TW,写在语言代码后面,用连字符连接,如en-GB; - 只写地区不写语言是错误的,例如单独写
GB无效; - 简体和繁体中文可以用
zh-Hans、zh-Hant这样的文字代码区分,也可以用zh-CN、zh-TW按地区区分,选一种方式并保持一致。
常见错误是把英国写成 en-UK,正确的地区代码是 GB。
三种部署方式对比
| 方式 | 写在哪里 | 优点 | 缺点 |
|---|---|---|---|
| HTML 标签 | 每个页面的 head 中用 link rel=”alternate” hreflang 标注 | 直观,CMS 插件普遍支持 | 语言版本多时会增加每个页面的代码量 |
| HTTP 响应头 | 服务器返回的 Link 头 | 适用于 PDF 等非 HTML 文件 | 配置和检查都不方便 |
| XML 站点地图 | 在 sitemap 的每个 url 条目中用 xhtml:link 标注 | 集中管理,不改动页面代码,适合大型站点 | 不容易在页面上直接看到,需要定期核对 |
三种方式选一种即可,不建议混用,混用时一旦两边不一致,排查会很麻烦。
必须遵守的核心规则
- 互相指向:如果英文页指向了法文页,法文页也必须指回英文页。只有单向标注时,搜索引擎可能会忽略这组关系。
- 包含自引用:每个页面在列出其他版本的同时,也要列出它自己。例如英文页的标注列表中要包含 en 指向自身的那一条。
- 使用完整的绝对网址:包括协议和域名,例如 https://example.com/fr/page/,不要写相对路径。
- 指向可收录的规范网址:标注中的网址应返回 200 状态码,不能是跳转、404 或被 noindex 的页面,并且要与该页面的 canonical 一致。
- 对应的是同一内容的不同版本:应该把英文的产品 A 页和法文的产品 A 页关联,而不是全部指向各语言首页。
以一个有英文、法文两个版本并设置默认页的页面为例,每个版本的 head 中都应包含同样的一组标注:
<link rel="alternate" hreflang="en" href="https://example.com/en/page/" /><link rel="alternate" hreflang="fr" href="https://example.com/fr/page/" /><link rel="alternate" hreflang="x-default" href="https://example.com/en/page/" />
x-default 怎么用
x-default 用来指定“没有匹配语言或地区时”展示的默认版本。典型场景有两种:
- 网站有一个语言选择页,让用户自己选择语言,这个选择页适合设为 x-default;
- 没有选择页时,通常把面向最广泛用户的版本(很多网站是英文版)设为 x-default。
x-default 不是必填项,但多语言站点建议加上,能让未被覆盖的用户也有一个合理的落地页。
多语言网站的其他配套设置
语言标注只是多语言 SEO 的一部分,以下几点同样重要:
- URL 结构:常见的有子目录(/en/、/fr/)、子域名(en.example.com)和独立国家域名。子目录便于集中权重和管理,是多数中小网站的稳妥选择。
- 不要按 IP 强制跳转:根据访客 IP 自动跳转语言版本,可能导致搜索引擎爬虫只能看到一种语言。更好的做法是显示语言切换提示,让用户自己选择。
- 翻译质量:机器翻译后不经审校就上线,内容质量难以保证。多语言内容的生产流程可以参考 多语言AI翻译内容系统 的思路。
- 本地化而不只是翻译:货币、单位、联系方式、案例都要符合当地习惯,关键词也要针对当地用户的说法重新调研。
- 各语言版本独立优化:标题、描述、内链都按该语言单独处理,不要保留其他语言的残留文字。
页面的 canonical 设置与语言标注关系密切,相关原理可以参考 canonical 标签与重复内容。
常见问题
设置完成后,如何检查是否生效?
可以查看页面源代码确认标注是否完整,用网址检查工具查看 Google 选择的规范网址;对大型站点,可以用 SEO 爬虫工具批量抓取,检查有没有缺少回指、缺少自引用、指向非 200 页面等问题。生效需要时间,搜索引擎重新抓取相关页面后才会体现。
只有一种语言但面向多个国家,需要 hreflang 吗?
如果所有国家看到的内容完全一样,一般不需要。如果针对不同国家有不同的价格、货币、联系方式等区别,就可以用 en-US、en-GB、en-AU 这样的标注区分各地区版本。
部分页面只有中文版,没有英文版,怎么处理?
语言标注只需要在确实存在对应版本的页面之间设置。只有单一语言版本的页面可以不加 hreflang,或只保留自引用,不要把它指向另一语言的首页或无关页面。
多语言网站的 hreflang、URL 结构和翻译流程需要在建站阶段就规划好,后期补救的成本往往更高。SEO飞侠 的 SaaS官网中英双语建站与SEO 方案介绍了相关做法;如果你的多语言站点出现了版本错乱或收录问题,可以通过 Telegram @Seofeixia 发来网址做免费诊断。