多语言SEO最容易被忽略的技术环节不是翻译质量,是hreflang标签——它不出错你感觉不到它存在,一出错你所有翻译页面的排名都白做。
上个月我给工具站加了法语和德语版本,翻译质量自认为不错——不是机翻,找了母语者校对。上线两周后查GSC,法语页面在 Google.fr 的展示量不到20,德语页面在 Google.de 更惨,个位数。
我以为翻译太慢被索引了。等了几天还是没动静。直到有一天我无意中打开 hreflang 验证工具跑了一遍——才发现我根本没加 hreflang 标签。
翻译页面上线两周,Google完全不知道它们是其他语言版本的替代页面。等于白干。
那天我才意识到:hreflang不是锦上添花,是多语言SEO的地基。没有它,你的翻译页面就像孤岛一样漂在互联网上,Google不知道它们和主站有什么关系。
这篇文章把我研究hreflang过程中的所有坑、所有知识点、以及最终落地的方案,全摊开给你看。
一句话:hreflang是一个HTML标签,用来告诉搜索引擎「这个页面有多个语言版本,请根据用户的语言偏好显示最合适的那个」。
比如你有一个工具站,同一个计算器页面有英文版、法文版、德文版:
https://yourtool.com/calculator (英文)https://yourtool.com/fr/calculator (法文)https://yourtool.com/de/calculator (德文)如果不加hreflang,Google可能把法文版推给德国用户,或者把英文版推给法国用户——结果就是用户看到一堆看不懂的文字,秒关。
加了hreflang之后,Google知道这三个页面是同一内容的不同语言版本,会根据用户浏览器的语言设置自动匹配。
我踩的第一个坑就是:以为多语言=翻译,忽略了多语言=告诉Google这些页面之间的关系。
这是最常见的错误。Google的John Mueller说过,缺少返回链接是hreflang实现中最常见的错误。
什么意思?
假设你的英文页面是 /en/page,法文页面是 /fr/page。
✅ 正确的双向引用:
英文页面上的hreflang标签:
<link rel="alternate" hreflang="en" href="https://yourtool.com/en/page" />
<link rel="alternate" hreflang="fr" href="https://yourtool.com/fr/page" />法文页面上的hreflang标签:
<link rel="alternate" hreflang="en" href="https://yourtool.com/en/page" />
<link rel="alternate" hreflang="fr" href="https://yourtool.com/fr/page" />关键点:每个语言版本的页面上,hreflang标签必须完全一致。 法文页面上不能只写自己的hreflang,必须把英文版也写进去——反过来也一样。
❌ 错误的做法(只写了单向):
法文页面上的hreflang:
<link rel="alternate" hreflang="fr" href="https://yourtool.com/fr/page" />
<!-- 缺少en的引用! -->Google看到这种不完整的hreflang标注,会直接忽略全部。也就是说,你加了一个hreflang但不完整,等于没加。
hreflang用的是ISO标准代码,不是你想写什么就写什么。
en(英语)、fr(法语)、de(德语)、zh(中文)、ja(日语)US、GB、FR组合格式:hreflang="语言-国家",如 en-US、fr-FR、zh-CN。
我见过的错误:
ENG 而不是 en — hreflang要求小写uk 代表英国 — 正确是 en-GB,uk不是合法的ISO语言代码zh-Hans — hreflang标准下应该是 zh-CN(虽然 zh-Hans 在BCP47标准下是合法的,但Google对hreflang的处理更偏向zh-CN)如果你只做语言区分(不做国家区分),可以省略国家代码。 比如你只想区分英语和法语版本,不区分法国法语和加拿大法语,那就写 en 和 fr 就够了。
但如果你想做国家级别的区分——比如英国英语和美国英语,用不同的内容/价格——就必须加国家代码:en-GB 和 en-US。
x-default 是一个特殊的hreflang值,表示「当用户的语言偏好不匹配任何现有版本时,显示这个默认版本」。
<link rel="alternate" hreflang="x-default" href="https://yourtool.com/" />什么时候需要 x-default?
典型场景:用户浏览器语言是韩语(ko),但你的网站只有英法德三个版本。如果没有 x-default,Google可能随机选一个版本展示。有了 x-default,Google会把x-default指向的页面推给它。
x-default 通常指向什么?
两种常见做法:
我用的是第二种——指向英文版。因为大部分国际用户看到英文至少能凑合看,比看到一个语言选择器然后被要求点按钮的体验好。
如果你的页面同时设置了 canonical 和 hreflang,它们指向的URL必须一致。
这是个坑中坑。
举个例子:你的法文页面 /fr/page 的 canonical 指向了 /en/page(想集中权重到英文版),但同时又在法文页面上写了 hreflang 标签指向 /fr/page。
Google看到这个页面有两个冲突信号:
两个信号打架 → Google会忽略hreflang标签,只保留canonical。
所以:如果你用hreflang管理多语言,每个语言版本的canonical必须指向自己。
法文页面:<link rel="canonical" href="https://yourtool.com/fr/page" />
法文页面hreflang中的fr也必须指向:https://yourtool.com/fr/page
→ 一致 ✅这个坑看起来蠢,但实际上很多工具生成的hreflang列表不包括自己在内。
hreflang的自引用规则:每个页面必须在自己的hreflang标签中包含对自己语言版本的引用。
也就是说,英文页面上的hreflang列表里,必须有 hreflang="en" 指向自己的URL。
<!-- 英文页面上的hreflang列表 -->
<link rel="alternate" hreflang="en" href="https://yourtool.com/en/page" /> ← 必须包含自己!
<link rel="alternate" hreflang="fr" href="https://yourtool.com/fr/page" />
<link rel="alternate" hreflang="de" href="https://yourtool.com/de/page" />有些CMS或插件生成的代码只列出「其他语言版本」,不包含当前页面——这种实现Google会忽略。
搞清楚了坑之后,来看怎么实现。hreflang有三种技术实现方式:
在 <head> 里直接写 <link> 标签:
<head>
<link rel="alternate" hreflang="en" href="https://yourtool.com/en/calculator" />
<link rel="alternate" hreflang="fr" href="https://yourtool.com/fr/calculator" />
<link rel="alternate" hreflang="de" href="https://yourtool.com/de/calculator" />
<link rel="alternate" hreflang="x-default" href="https://yourtool.com/en/calculator" />
</head>优点: 简单直观,调试方便,直接看页面源码就能验证。缺点: 每个页面都要写,页面多了维护麻烦。
在sitemap里标注hreflang:
<url>
<loc>https://yourtool.com/en/calculator</loc>
<xhtml:link rel="alternate" hreflang="en" href="https://yourtool.com/en/calculator" />
<xhtml:link rel="alternate" hreflang="fr" href="https://yourtool.com/fr/calculator" />
<xhtml:link rel="alternate" hreflang="de" href="https://yourtool.com/de/calculator" />
</url>优点: 不增加HTML体积,适合页面量大的站。缺点: 调试不直观,需要提交sitemap后等Google处理。
在服务器响应头中返回hreflang信息:
Link: <https://yourtool.com/fr/calculator>; rel="alternate"; hreflang="fr"优点: 不依赖HTML。缺点: 适合非HTML文件(如PDF),对普通网页来说维护成本最高。
我的选择:方式1(HTML标签)。 对于一个刚起步的工具站来说,页面量不超过100个,直接写代码里最省心,也方便随时检查。
写完hreflang不是完事了。上线前必须验证。
我用的两个验证工具:
验证清单:
检查项 | 说明 |
|---|---|
返回链接完整 | 每个页面的hreflang列表完全一致 |
自引用存在 | 每个页面在hreflang中引用自己 |
语言代码正确 | ISO格式,小写,无拼写错误 |
canonical一致性 | canonical和hreflang指向同一个URL |
x-default设置 | 有兜底页面 |
状态码200 | hreflang指向的URL全部可访问,无404/301 |
这个问题我问过自己。
一个只有5个工具、月访问量不到5000的工具站,值得花时间做多语言和hreflang吗?
我的答案是:取决于你的工具类型。
如果你的工具是纯计算类的——比如汇率换算器、BMI计算器——用户不需要看太多文字就能用,那多语言的ROI可能不高。一个法国用户看到一个英文的BMI计算器,输入身高体重就能出结果,语言不是障碍。
但如果你的工具依赖文字引导——比如我有一个「关键词难度分析工具」,需要用户理解"KD分数"、"搜索量"、"CPC"这些术语——那中文用户和英文用户的体验差距就很大。这种情况下,不做多语言等于放弃非英语市场的流量。
更实际的一个判断标准:去看GSC里你网站的搜索查询,有没有其他语言的搜索词。 如果有法国用户用 calculateur de... 搜到了你的站,而且点击了——这就是多语言需求信号。
我的站就是看到了德语和法语的搜索词,才决定加这两个版本。
/fr/)还是子域名(fr.example.com)?推荐子目录,权重继承更直接<head> 中添加完整的hreflang标签列表(含自引用 + x-default)适合谁: 正在做或计划做多语言版本的独立站/工具站站长。尤其是用子目录结构(/en/ /fr/)的站。
不适合谁: 纯英文站点,或工具本身就是语言无关的(计算器类),可以先跳过。
袁锐钦 · AI产品实操 & 出海工具站日更中。做产品、测工具、跑变现,把试过的路摊开给你看。
[1] hreflang.org: https://hreflang.org