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 链。