多语言网站 SEO 与 Hreflang 最佳实践

如何用 hreflang、URL 结构与本地化选择做好多语言 SEO,避免重复内容与浪费抓取预算。

地球与语言标签隐喻速写,无文字
本页内容

上第二个语言感觉像赢,直到 Search Console 塞满「返回标记不正确」,而 Google 仍把英语页推给德国购物者。多语言 SEO 少关于翻译字符串,多关于给每个市场稳定 URL、清晰语言或语言区域信号,以及匹配当地人真正会买的内容。

本指南覆盖 URL 结构选择、hreflang 如何工作(含互指与 x-default)、语言对照语言区域、翻译对照本地化、常见失败模式、抓取预算、CMS 陷阱、实战场景与上线清单。

在标注任何东西之前,先选定 URL 结构

Hreflang 只指向 URL。若那些 URL 乱、基于参数或半迁移,标注救不了项目。Google 关于管理多地区与多语言站点的指引列出常见模式。你选一个主模式并坚持。

模式 示例 优势 成本
ccTLD example.de、example.fr 强国家信号、本地信任 独立站点、更多运维、外链资产分散
子域名 de.example.com 清晰分离、主机灵活 国家信号弱于 ccTLD
子目录 example.com/de/ 单域名、共享权威、CMS 更简单 国家信号更依赖内容与 hreflang

对多数仍在单一品牌域名上积累权威的产品与内容站,子目录胜出。当法律实体、定价或合规真正按国不同,且你能给每个站配人时,ccTLD 才说得通。需要独立栈(例如面向中国的源)又不想买每个 TLD 时,子域名居中。

避免把语言当查询字符串(?lang=de)。那些 URL 易重复、难分享、分析别扭。标注正确时 Google 仍能理解,但靠参数语言区域过日子的人,通常在筛选与活动撞车时后悔。

把选定模式写在工程师与译员都会读的一个地方。以后从 /de/ 改到 de.example.com 意味着完整重定向映射与 hreflang 重写。这笔迁移税,就是为什么 URL 决策属于第一篇译文上线之前。

多语言站三种 URL 模式:ccTLD、子域名与子目录

图 1:同一品牌的 ccTLD、子域名与子目录并排布局。

Hreflang 实际如何工作

Hreflang 告诉 Google,哪个 URL 是给定语言或语言-地区组合的预期版本。它本身不创造排名。它在存在多个近似匹配页时,帮助 Google 选择正确交替页,好让德国用户更可能看到德语 URL——当该 URL 是英语页的有效交替时。

你可以按 Google 文档用三种方式声明交替:

  1. 页面 <head> 中的 HTML <link rel="alternate" hreflang="..." href="...">
  2. 非 HTML 文件(PDF 等)的 HTTP 头
  3. 大型目录的 XML sitemap 标注

多数营销站用 HTML 标签或 sitemap 条目。大型电商目录常偏好 sitemap,好让模板保持轻薄。对给定 URL 集选一种主方法并保持一致。同一页集混用部分 HTML 与部分 sitemap 标注,是漂移的常见来源。

代码遵循 Google 接受的 BCP 47 风格值:如 en 或 de 的语言码,可选地区如 en-GB 或 pt-BR。用 ISO 639-1 语言码;需要地区时用 ISO 3166-1 Alpha 2 国家码。不要发明像 uk 这种英国英语缩写(通常用 en-GB)。不要只用地区码。

集合中每一页都应列出每个交替,包括自身的自引用条目。若 https://example.com/pricing/ 是英语、https://example.com/de/pricing/ 是德语,两页(或其 sitemap 行)都需要指向最终、可收录 URL 的 en 与 de 条目。

交替之间的互指确认

Google 本地化版本文档明确:标注必须从另一侧确认。若页 A 把页 B 标为 de,页 B 必须把页 A 标回 en(或 A 的语言是什么)。单向链接对该关系会被忽略。

互指安静失败的情况:CMS 只在「主」语言区域生成标签;译员发布新语言却未更新旧页;或 CDN 缓存了旧 head 而线上页已迁移。Search Console 的国际定位 / hreflang 报告(若你的资源有)以及提取 link[rel=alternate][hreflang] 的爬取,都比肉眼看 HTML 更快抓到这一点。

英语与德语页之间成对互指的 hreflang 箭头

图 2:每个交替必须指回来。单向箭头不算已确认配对。

x-default 与未匹配访客

x-default 标记当其他 hreflang 值都不匹配用户语言或地区设置时,你希望展示的 URL。Google 在同一份本地化版本文档中把它描述为未匹配语言的回退。

典型用途:

  • 语言选择器或全球入口页
  • 你不单独做选择器时的主英语(或其他枢纽)URL
  • 精心选择的「世界其余地区」店面

x-default 不是「说英语的人的页面」。英语仍需要自己的 hreflang="en"(或 en-US、en-GB 等)。诚实时,x-default 可以与 en 指向同一 URL。它也可以指向可收录且有用的选择器。它不该指向软 404、永不落稳的 geo-IP 重定向插页,或随机博客帖。

若你在用户(或 Googlebot)看到稳定 URL 之前就按 IP 自动重定向,你同时在和可用性与抓取打架。Google 的多地区指引告诫不要仅靠 IP 展示内容。优先每个语言区域一个稳定 URL,加可见语言切换器,让 hreflang 做匹配工作。

语言不匹配 en、de 或 fr 时作为回退的 x-default

图 3:x-default 接住语言在标注集合之外的访客。

语言代码对照语言区域代码

de 表示德语,与国家无关。de-DE 表示德国使用的德语。de-AT 表示奥地利使用的德语。当货币、物流、法律文案或拼写分叉时,意图不同。

当一个 URL 诚实服务该语言所有使用者时,用仅语言码。即便语言字符串看起来相同,页面却按市场不同时,用语言-地区码。给全球读者的单一英语页常是 en 加 x-default。价格与拼写不同的独立英英与美英店面,通常是 en-GB 与 en-US,各有自己的 URL。

不要创建只差国旗图标与 CDN 边缘的 en-US 与 en-GB 重复。Hreflang 发明不出有意义的差异。若页面近乎相同,合并或认真本地化。

简繁中文需要小心。面向大陆受众的简体与面向台湾或香港的繁体是不同阅读体验。优先不同 URL 与精确代码(zh-Hans、zh-Hant,或你栈一致支持的地区形式),而不是一个混用字体的 zh 页。无论选什么,在 HTML、sitemap 与语言切换器间保持同一代码族。

仅语言标签对照语言-地区语言区域标签

图 4:语言码宽覆盖使用者。语言区域码在内容真正不同时钉住市场。

翻译止于何处,本地化起于何处

机器或人工翻译只换词,却留下美元、美国物流矩阵、美国案例与美国法律页脚,即便 hreflang 完美也会表现不佳。本地化改变商业表面。货币、税显、支付方式、支持时段、信任信号、示例与监管文本,都需要市场遍。

对 SEO 而言,本地化还包括:

  • 按该语言人们如何搜索来写 title 与 meta description,而不是英语关键词的生硬直译
  • 存在等价页时,内链留在同语言枢纽内
  • 重要处用本地 UI 或说明的图片与截图
  • 跳过仍被标为完整交替的稀薄「即将推出」语言区域壳

若市场未就绪,先别放进 hreflang,直到页面真正等价。把占位标成 fr,等于教 Google 法语交替很弱。

最佳实践: 先交付更少、商业上完整的语言区域,再把十个半翻译文件夹洒进 sitemap。

超越生硬翻译的本地化层:货币、法律、示例、搜索措辞

图 5:不止换词。货币、证明点与法律表面也要市场遍。

常见 hreflang 与国际 SEO 失败

这些几乎出现在每一次多语言爬取复审中。

断裂互指。 新语言区域上线,标签列了旧语言,但旧语言从未更新。用单一真相源(构建步骤或 CMS 字段)在每个语言区域上重新生成完整交替集来修。

错误代码。 eng、uk、zh-CN 与 zh-Hans 不一致混用,或本意语言却用了地区码。对照你在 URL 文档里标准化的代码列表校验。

标注非规范或不可收录 URL。 Hreflang 必须指向最终首选 URL。若德语页规范到英语,或返回 noindex,交替集在说谎。先修 canonical 与收录。

HTTP 与 HTTPS 混用,或 www 与非 www 混用。 交替集中每个 href 应使用你选定为规范的同一主机与协议。

部分覆盖。 只有首页有 hreflang,产品模板没有。或只有 sitemap 有条目而 HTML 与之矛盾。端到端覆盖赚流量的模板。

制造参数重复的语言切换器。 在 /de/ 上再加 ?currency=EUR、却无规范纪律的切换器,会倍增近重复并浪费抓取。

自动重定向环。 检测语言、302 到另一文件夹,再有规则把机器人送到别处。给 Googlebot 在稳定语言区域 URL 上返回 200。

警告: Hreflang 错误很少抛可见的页面 bug。用户仍可能浏览,而 Google 忽略交替映射。把 Search Console 与爬取差异当作监控面。

常见失败图标:单向标签、坏代码、noindex 目标、混主机

图 6:常见断裂是互指、代码、可收录性与主机不一致。

多语言站上的抓取预算

每个新语言区域都倍增 URL 数。页面独特且有链接时可以。当你克隆稀薄模板、每种语言的分面筛选,以及没人想翻译的标签归档时,就伤人。

抓取预算不是神秘分数。实务上你关心 Googlebot 把时间花在赚钱 URL 还是垃圾上。多语言垃圾长这样:

  • 造出成千上万近空列表的筛选组合译文
  • 每种语言的稀薄帖分页归档
  • 页脚仍链接的预发或预览语言区域
  • CMS 发布失败后 404 或软 404 的交替

像单语言审计一样,在每个语言区域合并或 noindex 低价值表面。Sitemap 限到属于交替映射的规范、200、可收录 URL。加语言时,只加你能维护的模板。

内链应偏好同语言区域路径。只链到英语分类枢纽的德语文章,会多出跳数并稀释语言簇。

偏好赚钱语言区域 URL、而非稀薄翻译筛选的抓取路径

图 7:更多语言意味着更多 URL。优先在商业模板上抓取,而非翻译筛选噪音。

CMS 与插件陷阱

WordPress、Shopify、Webflow、自定义 Next.js 应用与企业 CMS,以不同方式长出 hreflang bug。底下模式相同:渲染页面的系统,不是唯一自认拥有交替的系统。

留意:

  • 两个插件都打印 link rel="alternate" 且意见不合
  • 无头 CMS 存语言区域 slug,而前端在生产以不同方式改写路径
  • Sitemap 插件列出每个语言区域,而 HTML 标签只列子集
  • 省略自引用的「Hreflang」模块
  • 复制到新语言区域时克隆了 noindex 或预发 canonical
  • 对机器人与用户提供不同 HTML 的 CDN 或反向代理层(有意时少见,意外时一团糟)

对网站国际化工作,把 hreflang 当作每次重大变更都要重新验证的发布清单项。尤其在 WordPress 多语言栈上,每次重大插件或主题更新后,验证每个语言区域赚钱页的线上 HTML。

若在应用内生成标签,加 CI 检查或爬取断言,按模板统计预期交替数。人工抽查会漏掉第十个语言。

在 hreflang 输出上冲突的 CMS 层:主题、插件、sitemap、CDN

图 8:主题、插件、sitemap 与 CDN HTML 各自可能发出不同的交替故事。

能扛住发布日的实现路径

耐用的上线看起来像这样。

  1. 冻结 URL 模式 以及商业上就绪的语言区域列表。
  2. 在表格或数据库中映射等价。 每行是一个内容单元。列是语言区域 URL。空单元格表示「尚无交替」(填满前不要放进 hreflang)。
  3. 为该模板类选择 HTML、HTTP 或 sitemap 作为真相源。
  4. 生成含自引用、互指的标签,在你有意回退处含 x-default。
  5. 对齐 canonical,使每个语言区域 URL 在应被收录时规范到自身。
  6. 更新语言切换器,使每个语言区域链到映射等价,而不是猜首页。
  7. 在你管理的每个资源上提交或刷新 sitemap(Search Console)。
  8. 部署后爬取并 diff。 赚钱模板上互指或代码校验失败则让发布失败。
  9. 监控 Search Console 的 hreflang 问题,以及效果报告中意外的国家或语言落地模式。

Google 关于本地化页面版本的文档,是标签语法与互指的规范参考。第三方校验器有帮助,官方规则仍决定 Google 接受什么。

从 URL 冻结到爬取验证的实现步骤

图 9:先映射等价,生成互指标签,再在部署后用爬取验证。

SaaS 站加德语与法语的实战场景

Acme 在 https://www.acme.example/ 上交付 B2B 分析产品,博客与定价为英语。营销想要德语与法语做欧盟扩张。工程偏好单域名。他们选子目录:/de/ 与 /fr/。

他们 不 翻译每一个旧博客标签归档。他们本地化首页、定价、产品概览、文档入口,以及仍带来管道的二十篇帖。法务写欧盟就绪的隐私附录。定价在需要处显示欧元与增值税说明。案例换成他们真正有权使用的欧盟 logo。

等价映射(简化):

单元 en de fr
首页 / /de/ /fr/
定价 /pricing/ /de/pricing/ /fr/pricing/
产品 /product/ /de/product/ /fr/product/

这六个 URL(加自身)每个都发出 en、de、fr,以及指向英语首页或他们决定保持可收录的小地区选择器的 x-default。只存在于英语的博客帖在翻译前省略 de/fr。他们从不让德语首页指向法语定价 URL。

上线后第一周,爬取发现英语定价仍缺新交替,因为缓存层提供了旧 head。他们清除、再爬,并确认互指。处理完成后,Search Console 停止在这些 URL 上报返回标记错误。

他们把成功衡量为德语与法语查询落在 /de/ 与 /fr/ 赚钱页上。这里单看已收录 URL 数是弱成功指标。

SaaS 站添加 /de/ 与 /fr/,并映射首页、定价与产品 URL

图 10:Acme 映射少数完整等价,交付互指标签,并跳过稀薄归档翻译。

多语言 SEO 清单

在宣称项目完成前用这份。

  • 一份文档化的 URL 模式(ccTLD、子域名或子目录)一致使用
  • 仅商业上就绪的语言区域上线并被标注
  • 每个被标注 URL 返回 200、可收录,且在应排名时自规范
  • Hreflang 代码匹配你的语言 vs 语言区域政策(de vs de-DE 等)
  • 每个成员页或 sitemap 行上有完整交替集,含自引用
  • 集合上互指确认
  • x-default 指向有意回退
  • 语言切换器链到真实等价,不制造参数重复
  • Sitemap 只列你想被抓取的规范语言区域 URL
  • 稀薄翻译筛选、标签与预发语言区域不在交替映射内
  • 部署后爬取在赚钱模板上验证标签
  • 你管理的主机上更新了 Search Console 资源与 sitemap

多语言 SEO 与 hreflang 上线就绪的清单剪贴板

图 11:上线就绪覆盖 URL、代码、互指、可收录性与部署后验证。

常见问题

只有一种语言还需要 hreflang 吗?

不需要。Hreflang 用于同一内容的交替语言或语言区域版本。单语言站应聚焦干净 canonical 与抓取访问。加指向无用处的装饰性 hreflang,只会制造监控噪音。

Hreflang 能单独修好重复内容吗?

它帮助 Google 在有效版本中选择正确交替。它不替代 canonical 纪律,也救不了稀薄复制页。先修重复与质量,再标注真正等价。

每篇博客都该有每种语言吗?

仅当你会维护它们。部分覆盖可以。为该单元标注存在的语言,其余在上线前不要放进交替列表。

国际 SEO 永远是 ccTLD 更好吗?

不是。ccTLD 是强国家信号,对本地用户也常是信任信号,但运营成本更高,且除非你在每个属性上投入,否则会分散权威。许多全球品牌靠子目录加正确 hreflang 表现很好。从法律、主机与资源配置约束选,而不是论坛帖子的经验法则。

大型目录的 hreflang 该放哪?

SKU 成千上万时,XML sitemap 扩展性更好。保持 sitemap 条目与规范产品 URL 同步。若栈也打印 head 标签,抽查 HTML 并去掉冲突。

Hreflang 与 content-language meta 标签有何区别?

Hreflang 为 Google 搜索映射语言与地区的交替 URL。content-language meta 标签不是该映射的替代。交替请遵循 Google 的本地化版本机制。

收尾

多语言 SEO 在 URL 稳定、语言区域是真产品、hreflang 是那些 URL 的互指映射时才站得住。挣扎的团队通常先标注后本地化,或让插件在第三语言上线后无人再验证地吐出标签。

若你在规划语言区域上线或清理现有交替映射,可通过联系表单找到我。