hreflang 必须成组互指且每页写全所有语言版本(含自身和x-default),值须严格符合bcp 47规范(如zh-hans、en-us),href为精确绝对url,html lang属性须与之匹配,否则整组失效。

hreflang 必须成组互指,且每页都得写全
只在英文页加一条指向中文的 <link rel="alternate" hreflang="zh-Hans" href="https://example.com/zh/">,中文页不回写指向英文的链接——Google 会直接忽略整组声明。这不是“建议”,是硬性规则。
每个语言页的 中,必须包含全部语言版本(含自身和 x-default)的 <link rel="alternate" hreflang="...">,顺序无关,但缺一不可。比如三语站,每页都要有三条:en、zh-Hans、x-default。
- 漏掉反向链接 → 搜索引擎认为“该语言无对应版本”,降权或不索引
- 某页少写一条(比如法语页没声明
en)→ 法语页的 hreflang 组失效 -
x-default不是“默认语言”,而是兜底入口,通常指向通用英语页,不能省略
hreflang 值必须严格符合 BCP 47,错一个字符就全废
zh-CN 和 zh-Hans 是两个完全不同的值,混用会导致关系断裂;zh_cn(下划线)、EN-us(大写语言码)、chinese(非标准)都会被爬虫直接跳过。
正确写法只有这些:zh-Hans(简体中文,推荐)、zh-Hant-HK(三段式合法)、en-US(小写语言 + 大写地区)、en(仅当无地域差异时可用,但不如 en-GB 明确)。
- 所有 hreflang 值必须小写字母 + 连字符,不能有空格、下划线或大小写混用
- 不要用
zh或en单语言码覆盖多地区场景(如中英文都含港澳台),优先选带脚本或地区的三段式 - 检查工具常报 “Invalid language tag”,八成是连字符位置或大小写错了
href 必须是绝对 URL,相对路径对 SEO 无效
/zh/、./zh/、甚至 https://example.com/zh/ 后面多一个斜杠(https://example.com/zh//)都会让 Google 忽略该条声明。hreflang 的 href 不是给用户跳转用的,是给爬虫解析关系的,路径必须精确、可直访、无重定向链。
- CDN 或多环境部署时,务必确认所有语言页的 href 都指向生产环境的完整域名(
https://开头) - 如果页面本身经 301 跳转到达(如访问
/跳到/en/),但/en/页面里的 href 指向的是/zh/(未跳转原始路径),hreflang 也会失效 - 避免用 JS 动态拼接 href,爬虫不执行 JS,动态生成的标签等于没写
别指望 hreflang 自动跳转,那是服务端或前端的事
hreflang 只告诉搜索引擎“这个页面还有哪些语言版本”,它不会触发浏览器跳转、不改变渲染、不参与用户交互。想让用户打开网站就进对应语言页?得靠别的机制。
- 服务端根据
Accept-Language请求头做 302 重定向(最可靠) - 前端 JS 读取
navigator.language后跳转(注意 SSR 场景下首屏闪烁) - 用 Cookie 或 localStorage 记住用户上次选择,优先级高于自动判断
- 把 hreflang 当作 SEO 辅助手段,不是功能实现层——混淆这两者是绝大多数失败案例的根源
最容易被忽略的一点:所有语言页的 属性也必须与 hreflang 值一致,否则语义冲突,Google 可能质疑页面真实性。比如 hreflang="zh-Hans" 对应的页面, 才算闭环。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











