hreflang 是什么——双语站真正要做对的部分

面向中英(或任意双语)站的 `hreflang` 实操指南:`<head>` 里到底放什么、生成器常错在哪、以及 2026 年 Search Console 旧报告下线后怎么验证。

如果你跑一个双语站,hreflang 决定了 Google 是把你的中文页面排进中文搜索结果,还是把中英两版当成互相竞争的重复内容。它就十来行 HTML,可大约一半的多语言站都有微妙的错。Google 自己的数据和主流审计工具都认同:用了 hreflang 的站里超过 60% 至少有一处错——而且因为 Google 把 hreflang 当作「提示」而非「指令」,配置坏了就直接被忽略,Search Console 里连个警告都没有。

一句话结论

每页 <head> 里放一组互相引用的 <link rel="alternate" hreflang="...">。中英两版的文章就是三条:英文 URL、中文 URL、加一个 x-default。每页都必须列出自己 + 所有其他语言版本,而且两边要互相指向对方——单向 hreflang 会被整组丢弃。URL 一律用绝对路径 https://,并和 canonical、sitemap 一字不差地对齐。

hreflang 到底管什么、不管什么

hreflang 是在告诉搜索引擎「这份内容有 X 语言在 URL A、Y 语言在 URL B」。Google 拿它做两件事:

  1. 在搜索结果里给对的用户展示对的语言版本。
  2. 把你的各语言版本聚成一簇,不让它们被当成互相竞争的重复内容。

不直接提升排名,而且只是个 Google 可以推翻的提示。但双语站上 hreflang 缺失或写错,通常会把非默认语言的流量打残——因为 Google 会把英文页推给中文搜索者(人家直接跳出),或者干脆每一对里只收录一个版本。

哪些迹象说明 hreflang 坏了

  • 中英两版文章在并行 URL 上(/en/articles/x//zh/articles/x/),但 Google 中文结果里出现的是英文页,或反过来。
  • Search Console 对某个语言版本显示「Alternate page with proper canonical tag」(这条通常没问题,见 FAQ)。
  • Screaming Frog、Ahrefs 之类爬虫在你的 hreflang 对上报「Missing return tags」/「no return-tag」。
  • 「网页(Pages)」报告里中文收录数远低于英文,尽管两边完整度一样。

标签到底长什么样

一篇英文(默认)+ 中文的文章,每一页都带同一组三条标签。英文页和中文页的 <head> 里都放:

<link rel="alternate" hreflang="en" href="https://yoursite.com/en/articles/slug/" />
<link rel="alternate" hreflang="zh" href="https://yoursite.com/zh/articles/slug/" />
<link rel="alternate" hreflang="x-default" href="https://yoursite.com/en/articles/slug/" />

三条铁律决定这组标签成败:

  • 自指。 每页都要列出自己 URL 对应自己语言值的那一条。Google 文档原话:「每个语言版本必须列出自身以及所有其他语言版本。」漏了自指标签,Google 可能就当这组不完整。
  • 互指。 英文页指向中文 URL,中文页也要指回英文 URL。Google:「如果两页没有互相指向,标签会被忽略。」这是最常见的翻车点。
  • 完全限定的 URL。https://yoursite.com/zh/articles/slug/,绝不要 //yoursite.com/.../zh/...。协议、主机、大小写、结尾斜杠都必须和你的 canonical、sitemap 完全一致——少一个结尾斜杠都算不匹配。

canonical 和 hreflang 是两件事

每个语言版本都用自指 canonical不要为了「集中权重」把中文页 canonical 到英文页(或反过来)——那会让你的中文页从中文搜索消失,正好南辕北辙。两个标签是配合干活:canonical 说「这是这份内容这门语言的标准 URL」,hreflang 说「这里还有其他语言版本」。

语言代码怎么选

除非你真的为不同地区出不同内容,否则用只标语言的代码(hreflang="zh")。如果你的区别是简体 vs 繁体的字形——中文最常见的情况——技术上正确的是 ISO 15924 字形子标签 zh-Hans(简体)和 zh-Hant(繁体),而不是国家代码 zh-CN/zh-TW。国家代码把字形和地理混为一谈(比如新加坡也用简体),zh-Hans/zh-Hant 才精准命中真正的差异。只有当你确实出地区专属内容时,再加地区码(zh-Hans-CNen-GB),因为地区码意味着你承诺维护那个变体。

标签放哪:head、sitemap 还是 HTTP 头

方式适合取舍
<head> 里的 <link>大多数站;最好调试(view-source 直接能看到)每页都要加这段标记
XML sitemap(xhtml:link上百页;保持 HTML 干净不好肉眼核对;每个 <url> 都要列全部备选
HTTP Link: 响应头非 HTML 文件(PDF)或靠头驱动的 CDN最难检查和维护

每个 URL 只用一种方式。Google 文档说得清楚:你可以三种一起上,但「在搜索里没有好处(反而可能难管得多)」。对典型的中英双语 Astro / Next / Hugo 站,<head> 标签就是默认正确选项。

怎么验证它真的生效(2026 版做法)

提个醒:Search Console 的 International Targeting(国际定位)报告已在 2022 年 9 月下线,所以那个会列 hreflang 错误的旧「语言」标签页不存在了。改用这套:

  1. View source 看一篇英文页,确认三条 hreflang;再打开对应中文页,确认是同样三条。两边标签块不一致是头号 bug。
  2. 爬虫 跑全站——Screaming Frog(500 个 URL 内免费)或 Ahrefs / Semrush 的 Site Audit——看专门的 hreflang 报告里有没有「Missing return tags」「Non-canonical」「Inconsistent」之类标记。
  3. Search Console 用 URL Inspection 逐条抽查——它已经不给你 hreflang 面板了,但能确认页面已收录,并显示 Google 选定的 canonical,按理应该就是该页自己(每种语言各自)。
  4. 每 3~6 个月以及任何一次域名、URL 结构、CMS 变动后都重新审计一遍,因为这类错误在掉流量之前是看不见的。

容易踩的坑

  • 单向 hreflang。 英文页引用了中文,中文页没引用回来。Google 默默把整组丢掉。
  • 漏了自指。 每页必须包含自己 URL 对应自己 hreflang 值那一条,否则 Google 认为这组不完整。
  • 把一种语言 canonical 到另一种。 会让非 canonical 的那门语言从搜索里消失。千万别做。
  • 通用内容却用地区码。 如果 zh-CNzh-TW 出的是同一份页面,你根本没有地区专属内容——用 zh(或按字形用 zh-Hans/zh-Hant)。
  • URL 漂移。 hreflang、canonical、sitemap 之间差一个结尾斜杠、http vs https、或大小写不同,都会让匹配失败。

这篇适合谁 / 什么时候别看

适合同一域名下跑并行中英两版(或任意双语组合)、slug 一一对应的独立内容站。如果你是单语站,完全跳过——hreflang 对你没意义。如果两个语言版本差异巨大(文章不同、结构不同),别硬上 hreflang,按两个独立属性来跑。

FAQ

  • 一定要有 x-default 吗?: 强烈建议有。x-default 是 Google 在「没有其他语言/地区匹配用户浏览器设置时」拿来兜底的版本。没它,Google 会替第三国用户猜,而且经常猜错。
  • hreflang 能放 sitemap 里而不是 <head> 吗?: 能。三种方式(head 标签、XML sitemap、HTTP 头)一样有效,但每个 URL 只用一种——Google 说同时用没有搜索上的好处,还更难管。页面多的站用 sitemap 版能让 HTML 干净;<head> 版更好调试。
  • Search Console 还显示「Alternate page with proper canonical tag」是咋回事?: 对非默认语言版本来说,这就是正确、应有的状态——意思是 Google 看到了这页,把它当成 canonical 页的备选语言版本,不是错误。只有当你的语言页面也显示这个时才要担心。
  • 该用 zhzh-CN 还是 zh-Hans: 只出一个中文版本就用 zh。如果简体、繁体分开出,用字形子标签 zh-Hans / zh-Hant——它命中真正的差异(字形),而不是从国家去猜。zh-CN/zh-TW 留给真正的地区专属内容。
  • hreflang 能帮我在百度排名吗?: 不能。百度不用 hreflang。百度需要百度站长平台 + ICP 备案,是另一套流程。hreflang 只对 Google 和 Bing 有用。

参考来源

相关阅读

标签: #独立开发 #SEO #Technical SEO #hreflang #双语