Skip to content
返回发布与可发现性

Hreflang 配置

设 hreflang alternate 语言标使 Google 对每用户供正确语言版 — 发布时对多语言站关键。

为什么

若你站有 /launch(英)和 /zh/launch(中),Google 可能给中用户英版给英用户中版,因它基于常错信号猜。hreflang 标明确告 Google:"此 URL 是英版、另一 URL 是中版、供匹配用户语言偏好者"。此改 UX(用户见其语言)、增转化(用户少弹)、合跨语言变体排名信号(Google 视它们为组非竞者)。无 hreflang,英和中 /launch 页在索引中竞且都不如正 hreflang 对排好。hreflang 在发布尤关键因新页须从第 1 天与其 alternate 配对 — 后加 hreflang 意味重爬重索引,延迟排名益数周。

何时使用

构建期间,在 BaseLayout head,为每有语言 alternate 的页。发布前爬验证、发布后 Search Console 验。

如何做

1. 列每页所有 locale 变体:/launch(en)、/zh/launch(zh)、/ja/launch(ja)、/es/launch(es)等 — 你站支持的每 locale
2. 在 BaseLayout head,每页为每 locale 变体输出 hreflang 标:
   <link rel="alternate" hreflang="en" href="https://ez4code.com/launch">
   <link rel="alternate" hreflang="zh" href="https://ez4code.com/zh/launch">
   <link rel="alternate" hreflang="ja" href="https://ez4code.com/ja/launch">
3. 含 x-default hreflang 指默认 locale(通常 en):
   <link rel="alternate" hreflang="x-default" href="https://ez4code.com/launch">
4. 每 hreflang 标须双向:若 /launch 声 /zh/launch 为 alternate,/zh/launch 须声 /launch 为 alternate — 缺返链是最常见 hreflang 错
5. hreflang 值须有效 ISO 语言码(en、zh、ja、es)或语言-地区码(en-US、zh-CN)— 无效码如"english"或"chinese"被忽略
6. 每 hreflang URL 须返 200(非 404 或重定向)— 若 /ja/launch 尚不存在则勿在 hreflang 声;仅声明活的 alternate
7. 用 Screaming Frog 验:它有"Hreflang"报告标缺返标、无效码、非 200 目标
8. Google Search Console 中发布后查"International Targeting"报告 — 任何 hreflang 错 2 周内现此
9. 仅一 locale 存在的页(无翻译)不用 hreflang — 单一自引 canonical 够;hreflang 仅用于有实际 alternate 的页

示例

# Hreflang 配置 — ez4code v2.0 /launch

## 支持 locale:en、zh、ja、es、fr、de、pt、ko、ru

## /launch(英)head
<link rel="alternate" hreflang="en" href="https://ez4code.com/launch">
<link rel="alternate" hreflang="zh" href="https://ez4code.com/zh/launch">
<link rel="alternate" hreflang="ja" href="https://ez4code.com/ja/launch">
<link rel="alternate" hreflang="es" href="https://ez4code.com/es/launch">
<link rel="alternate" hreflang="fr" href="https://ez4code.com/fr/launch">
<link rel="alternate" hreflang="de" href="https://ez4code.com/de/launch">
<link rel="alternate" hreflang="pt" href="https://ez4code.com/pt/launch">
<link rel="alternate" hreflang="ko" href="https://ez4code.com/ko/launch">
<link rel="alternate" hreflang="ru" href="https://ez4code.com/ru/launch">
<link rel="alternate" hreflang="x-default" href="https://ez4code.com/launch">

## /zh/launch(中)head — 双向
<link rel="alternate" hreflang="en" href="https://ez4code.com/launch">
<link rel="alternate" hreflang="zh" href="https://ez4code.com/zh/launch">
...(全 9 locale + x-default)

## 验证(Screaming Frog)
77 URL × 10 hreflang 标 = 770 hreflang 链
0 缺返标 ✓
0 无效码 ✓
0 非 200 目标 ✓

## 发布后(Search Console)
International Targeting 报告:0 错 ✓

## 结果(4 周后)
Google 给 zh-CN 用户 /zh/launch(之前给 /launch)
zh 用户弹率:32% → 18%(正确语言供)

常见问题

  • ⚠缺返 hreflang 链 — /launch 声 /zh/launch 为 alternate 但 /zh/launch 不声 /launch;Google 忽单向 hreflang 且给两受众错语言。
  • ⚠为不存在的 locale 声 hreflang — /launch 声 /ja/launch 但日页返 404;Google 见坏 hreflang 且可能忽页上所有 hreflang 信号。
  • ⚠语言变体用 hreflang 而非 canonical — hreflang 告 Google alternate、canonical 告哪个权威;每语言版需自引 canonical 且 hreflang 到其他,非一或另一。
  • ⚠忘 x-default — 无 x-default 则 Google 不知给语言不在 hreflang 列的用户(如只有 en 和 zh 站的法用户)哪版;x-default 是回退。

最佳实践

  • ✓从单一 locale 配置(同驱路由生成的数组)生成 hreflang 标 — 此确保每页声同 alternate 集且无漏。
  • ✓每页含 x-default — 它是非匹配语言的回退且无成本;漏它是最常见 hreflang 对非列 locale"不工作"之因。
  • ✓用脚本验双向:每 hreflang A→B 查 B→A 存在;此抓 Screaming Frog 大站有时漏的单向链错。
  • ✓仅对完全翻译且活的 locale 加 hreflang — 部分翻译(页存在 en 和 zh 但非 ja)应仅 en 和 zh 有 hreflang 非坏 ja 链。