hreflang 标签必须成组互指且完全匹配,否则整组被静默忽略;每页需包含所有语言版本(含自指和x-default)的绝对url,语言码须严格遵循bcp 47规范,同时验证gsc国际化标签是否完整显示。

配错一个字符,整组 hreflang 就会被搜索引擎静默忽略——不是报错,是当没写。
hreflang 必须成组互指,漏一个就全失效
每个语言版本页面的 里,都要完整列出所有已知语言-地区变体(含自己和 x-default),少一条都不行。
- 错误做法:只在英文页加
<link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/">,中文页不回指英文页 - 正确做法:中文页也要写
<link rel="alternate" hreflang="en" href="https://example.com/en/">,且同时包含zh-CN自指和x-default - 三个版本(
en-US、zh-CN、ja-JP)→ 每页都得有三条<link>,共 3×3=9 条,不能靠模板“条件渲染”漏掉某条
语言代码必须严格符合 BCP 47,大小写和分隔符都不能错
zh-cn 和 zh-CN 在部分解析器里等价,但 Google 明确要求小写 + 短横线;写成 zh_CN、Chinese、zh-ch 全部无效。
- 优先用
zh-CN(国家区域),不用zh-Hans(书写系统),后者在 Safari 和某些 VoiceOver 版本中 fallback 不稳定 -
en-GB不是en-UK,ja-JP不是jp-jp,查 ISO 639-1 和 ISO 3166-1 官方表最稳 - 所有
href必须是绝对 URL,https://example.com/zh/✅,/zh/❌,./zh/❌ - HTTP 和 HTTPS 混用会断裂关系:同一组里不能出现
http://和https://
hreflang 和 lang 属性完全无关,别混着改
hreflang 是给爬虫看的“这页还有哪些语言版本”,lang 是给浏览器和屏幕阅读器看的“这段文字实际是什么语言”。两者不联动,也不能互相替代。
- 中文页
,但嵌了一段英文术语?必须单独加<p lang="en">API</p>,否则屏幕阅读器用中文念 “A-P-I” - 英文页写了
hreflang="zh-CN",但的lang还是"en"→ 搜索引擎收信号,浏览器仍按英文渲染中文段落,字体 fallback 和拼写检查全失效 - SPA 切换语言时,必须同步更新
document.documentElement.lang和所有语义元素的lang属性,不能只改根节点
验证闭环比写对更重要:GSC 里看不到“国际化”标签就是没通
写完别直接上线,先用 Google Search Console 的「URL 检查」工具抓取任意一个语言页,看「国际化」标签页是否列出全部对应关系。没列出来,说明某条链接 404、协议不一致、语言码拼错,或互指不全。
- 常见失败信号:
hreflang not verified、hreflang cycle missing、某语言页在 GSC 中完全不显示其他语言版本 - 不要依赖第三方工具“一键生成”,它们常漏掉自引用或
x-default,也容易把zh-cn渲染成zh_cn - 上线后至少等 3–5 天再查 GSC,Google 需要重新抓取并建立映射关系
最容易被忽略的是:所有语言页的 hreflang 必须物理存在、可访问、返回 200,且内容语言与声明一致——比如 hreflang="ja-JP" 指向的页面, 和正文主体都得是日文,否则 Google 会判定为欺骗性标注。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











