你辛辛苦苦做了多语言站,Google 却只收录了英文版?
翻译花了钱,本地化请了人,结果搜“your brand + 德语词”,首页压根没你的德语页——点开 Search Console 一看,法语、日语页面收录数是个位数,甚至被标成“重复内容已跳过”。
问题大概率不在翻译质量,而在 <link> 标签里那行不起眼的 hreflang。
hreflang 到底是什么?为什么它决定了你多语言站的生死?
hreflang 是 Google 读多语言网站的“说明书”。
它不负责翻译,也不管内容好不好,就干一件事:告诉 Google,“这个页面,是给说西班牙语的墨西哥用户看的”,或者“这个页面,是给说英语的澳大利亚用户看的”。
没这行说明,Google 会自己猜。
猜错了,就把你的法语页当成英文页的翻版,只留一个版本在搜索结果里;
猜懵了,干脆不收——你更新再勤,它也当没看见。
我帮一个做独立站出海的团队查过,他们上线了完整的德语站,但半年过去,德语页在 Search Console 里几乎全是“未索引”。一扒代码,所有页面的 hreflang 都漏了返回链接。Google 当然不理。
hreflang 最常见的 3 个错误,你中了几个?
错误一:语言代码写错
中文不是 zh-cn,也不是 zh-hans。
Google 认的是标准 ISO 代码:
- 简体中文用
zh-CN(注意大小写) - 繁体中文用
zh-TW - 英语通用版用
en,英国英语用en-GB,美国英语用en-US
写成小写、加下划线、用错连字符——Google 直接无视。
错误二:只做单向指向
你在英文首页写了:<link rel="alternate" hreflang="de" href="https://example.com/de/">
但德语首页里,没有这行反向指向英文页的代码。
Google 不认这种“单方面声明”。它要的是闭环:每个语言页,都得明确列出所有兄弟页面。
错误三:漏掉 x-default
x-default 不是可选项,是兜底项。
比如一个印尼用户打开你的官网,你没配 id-ID,也没设 x-default,Google 可能硬塞给他一个葡萄牙语页。
加上这一行,等于告诉 Google:“其他都不匹配时,请给我这个默认页。”
3 种实现 hreflang 的方法,哪种最适合你的网站?
方法一:HTML link 标签
在每页 <head> 里加几行 link 标签,比如:
<link rel="alternate" hreflang="en" href="https://example.com/">
<link rel="alternate" hreflang="ja" href="https://example.com/ja/">
<link rel="alternate" hreflang="x-default" href="https://example.com/">
适合页面少于 200 个的站点。手动改没问题;
超过这个量,每次增删页面都要同步改所有语言页——三天就手抖。
方法二:sitemap 文件
在 XML 站点地图里,用 <xhtml:link> 声明关系。例如:
<url>
<loc>https://example.com/</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://example.com/"/>
<xhtml:link rel="alternate" hreflang="ja" href="https://example.com/ja/"/>
<xhtml:link rel="alternate" hreflang="x-default" href="https://example.com/"/>
</url>
Google 明确推荐这种方式。CMS 或静态站生成 sitemap 时顺手加上,后期维护成本低得多。
方法三:HTTP header
仅适用于非 HTML 资源,比如 PDF 产品手册的多语言版。
在服务器响应头里加:Link: <https://example.com/manual-zh.pdf>; rel="alternate"; hreflang="zh-CN"
日常网站不用碰这条。
之前有个 SaaS 客户,站点有 4000+ 页面,最初全靠插件往每个页面塞 link 标签。后来换成 sitemap 方式,配合 Hugo 的多语言模板自动生成,发布新页面时 hreflang 自动对齐,再没人半夜爬起来修链接。
如何验证你的 hreflang 设置是否正确?
首选 Google Search Console 的「国际定位」报告(位置在:搜索引擎效果 → 国际定位)。
它会直接列出:
- 哪些页面 hreflang 格式不对(比如写了
zh_cn) - 哪些页面缺返回链接(A 指向 B,但 B 没指回 A)
- 哪些 hreflang 指向了 404 页面
其次,装个浏览器插件:hreflang Tag Checker(Chrome 商店免费)。
打开任意页面,它立刻高亮所有 hreflang 标签,并标出断裂链路——比翻源码快十倍。
我自己上线新语言前,固定两步:先用插件扫一遍所有语言页的闭环,确认每页都能“走出去”也能“走回来”;再把这批 URL 提交到 Search Console,等报告跑出绿勾才放心。
如果 hreflang 设置错了,怎么快速修复?
不用重做整个站点。按这四步来:
- 进 Search Console →「国际定位」报告 → 点右上角「导出」,拿到所有报错页面清单
- 打开其中几个典型页面,检查源代码:是语言代码写错?还是根本没加返回链接?
- 批量处理:如果你用 WordPress,别手改——直接开 Polylang 或 WPML,它们生成的 hreflang 默认闭环;用 Next.js 或 Nuxt 的,检查
_app.tsx或nuxt.config.ts里的多语言配置是否启用了自动 hreflang 注入 - 更新 sitemap(或让 CMS 自动重生成),重新提交到 Search Console
有个旅游平台客户,法语页 hreflang 全写成 fr-fr,改成 fr 后,两周内法语页的索引量明显提升,Search Console 里“未索引”状态陆续转绿。
今天就能执行的 1 个动作
现在就打开 Chrome,访问你网站任意一个页面(比如首页),右键 →「查看页面源代码」,快捷键 Ctrl+F(Mac 是 Cmd+F),搜 hreflang。
如果搜不到任何结果,或者只看到单向链接(比如只有英文页指法语页,但法语页没指回来)——说明你的多语言站正被 Google 当作“一堆重复页面”过滤。
接着,打开 Google Search Console,进「国际定位」报告,看顶部有没有红色感叹号。
如果有,点进去,导出错误列表,对照上面写的三个常见错误(代码大小写、闭环缺失、x-default 缺失),挑第一个页面动手改。
改完一个,刷新插件看闭环是否闭合;再提交一次 sitemap。
这事不难,但拖一周,Google 就可能多错过一百个精准用户。