你上线了简体、繁体、英文三个版本,结果台湾用户搜到的是简体页,美国用户看到的是中文站——多语言站点最常见的坑,几乎都出在 hreflang 上。
快速结论:hreflang 只有三条硬规则:双向成对、每个 URL 自引用、加一条 x-default 兜底。三条里缺任何一条,整组标注都会被忽略,配了等于没配。部署完不要靠感觉验收,去 Search Console 的国际定位报表逐条消错,两周内看展示国家分布是否归位。
三条硬规则:成对、自引用、兜底
hreflang 是对称关系。页面 A 声明了 B 是它的英文版,B 也必须声明 A 是它的中文版;单向声明会被判定为不可信,整组标注一起作废。最省心的做法是让每个页面都输出完整的版本清单,包括指向自己的那一条。
写法上,在 head 里为每种语言输出一行 link 标签,rel 用 alternate,hreflang 填语言与地区码,href 填绝对路径的完整 URL。自引用那行不能省。三个版本就是三行,加上 x-default 一共四行,每个页面都一样。
语言码用 ISO 639-1,地区码用 ISO 3166-1 Alpha-2,中间用连字符。只写 en 而不写 en-US 或 en-GB,搜索引擎只能靠猜;简繁区分用 zh-CN 与 zh-TW,不要写 zh-Hans 这类脚本码,兼容性不如前者稳妥。
- href 必须是可访问的绝对 URL,带协议和域名,不能用相对路径。
- href 指向的页面要返回 200,不能是 301 中转页或 404。
- 标注的目标页不能被 robots 屏蔽,也不能带 noindex。
x-default 到底该指向哪里
x-default 承接的是「所有没匹配上任何语言版本」的流量。一个法国用户搜到你的页面,而你只有中英两版,他会被送到 x-default 指向的那一页。
可以指向国际版英文页,也可以指向语言选择页。别指向会自动跳转的中转页,跳转会让抓取端在不同版本间绕圈;也别让某个地区页把 x-default 指向自己,这会形成自环,报表里通常显示为「缺少回退页」。
还没做专属页的地区,让它回退到 x-default 即可。多个语言版本内容高度相似时,各版本自引用 canonical,不要把它们互相指向同一个 URL,否则 hreflang 与 canonical 会互相打架。这两者的配合关系可以对照canonical 避免重复内容被分权一起看。
四类最常见的翻车点与修法
下面这几类问题,占了国际定位报表里报错的绝大多数。逐条对照排查,比盲目补标签快得多。
| 错误现象 | 造成的后果 | 修复动作 |
|---|---|---|
| 只写 en,没写 en-US / en-GB | 地区无法精确匹配,分配靠猜 | 补全地区码,按目标市场拆分 |
| A 指向 B,B 没有回指 A | 整组标注被忽略 | 让每页输出完整清单并自引用 |
| 本地化 URL 返回 404 或 301 | 报表报错,权重流失 | 先清死链与重定向链,再补标注 |
| hreflang 目标页带 noindex | 标注与索引指令冲突 | 去掉 noindex 或移出清单 |
| 用了错误的语言码(如 cn、uk) | 标注无效,直接被跳过 | 改成 zh、en-GB 等合法组合 |
第三类尤其常见:改版时批量换 URL,hreflang 却还指着旧地址。上线前先跑一遍死链与重定向链清理。
三种部署位置怎么选
hreflang 可以写在三个地方,任选其一,混用只会增加漏配和冲突的概率。选哪种主要看页面规模和技术条件。
| 部署位置 | 适用场景 | 主要缺点 |
|---|---|---|
| HTML head 的 link 标签 | 页面量中等、模板可控的站 | 版本多时 head 会很臃肿 |
| XML 站点地图 | 上百个语言版本的大站 | 调试不直观,要靠工具校验 |
| HTTP 响应头 | PDF、图片等非 HTML 资源 | 需要服务器配置权限 |
WordPress 多语言插件通常会自动输出 head 标签,但换主题或改固定链接后容易失配,上线前务必查看源码确认。用站点地图部署时,记得让 sitemap 索引文件包含全部语言分片,提交路径的注意事项可以对照robots.txt 与 sitemap 的配置要点。
上线后怎么验收
- 随机抽 5 个页面查看源码,确认版本清单完整、含自引用与 x-default。
- 用抓取工具全站跑一遍,重点看 hreflang 目标页的状态码是否全为 200。
- 提交对应语言的站点地图,触发重新抓取。
- 两周后在国际定位报表里看报错是否清零,同时在效果报告里按国家/地区拆分展示量。
- 确认目标市场的展示占比在上升,而不是几个版本互相抢同一批用户。
hreflang 生效要等所有版本重新抓取并对齐,通常一到两周才稳定,别在第三天判定失败。新增语言版本后要重走一遍验收,清单变了,旧页面的标注也得同步更新。
下一步 / 行动清单
- 今天打开 Search Console 国际定位报表,把现有报错按类型分组。
- 抽查 5 个核心页面的源码,确认双向成对、自引用、x-default 三条都到位。
- 本周跑一遍全站抓取,修掉 hreflang 指向的 404 与重定向链。
- 统一部署位置,只保留 head 标签或站点地图其中一种,去掉重复配置。
- 提交更新后的站点地图,两周后复查报错数与各国展示占比。
常见问题(FAQ)
hreflang 标签应该加在哪里?
三处任选其一:HTML head 的 link 标签、XML 站点地图或 HTTP 响应头。页面量中等选 head,大站用站点地图,PDF 这类资源用响应头,别混用。
hreflang 需要自引用吗?
需要。每个页面都要在自己的版本清单里包含指向自己 URL 的那一条,同时双向成对并补 x-default 兜底,缺任何一条整组标注会被忽略。
hreflang 和 canonical 冲突怎么办?
多语言版本内容高度相似时,各版本自引用 canonical,不要把 hreflang 里的版本互相指向同一个 URL,否则两套信号打架,排名互相拖累。
hreflang 多久生效?
要等所有版本重新抓取并对齐,通常一到两周才稳定。两周后在国际定位报表看报错是否清零,别在第三天就判定失败。
x-default 应该指向哪里?
指向所有语言都没匹配上时展示的页面,用国际版英文页或语言选择页。别指向会自动跳转的中转页,也别让地区页指向自己形成自环。
图:{‘raw’: ‘hreflang 多语言/多区域部署避坑指南’, ‘rendered’: ‘hreflang 多语言/多区域部署避坑指南’} 核心要点(运营GO 整理)


