hreflang 加了,为什么搜索引擎还是选错语言版本?

3 个讲解板块 · 关联 2 款站内工具 · 内容最后核对 2026-10-08

最常被忽略的一条:A 指向 B,B 必须指回 A,缺一条可能整组注解一起被忽略。

直接答案

先查返回链接。hreflang 是一组互相确认的声明:页面 A 声明了 B 是它的语言版本,页面 B 也必须声明 A。返回标签缺一个,搜索引擎就可能忽略整组注解,等于白配。

其次是三类写法问题:代码格式(语言用两字母的 ISO 639-1,地区用 ISO 3166-1 的两字母代码,且必须语言在前、只写地区无效);地址必须是带协议的绝对地址;每个版本都要包含指向自己的那一条。

hreflang 是最容易被误解的一段标签。它不做翻译,不控制浏览器显示什么语言,也不是排名因素——它只做一件事:告诉搜索引擎「同一份内容还有这些语言或地区版本,请把对的那个交给对的人」。

也正因为职责单一,它的失效方式很安静:配错了不会有任何报错,页面照常访问,只有多语言流量悄悄流向错误的版本。所以只能靠规则去核对,而不能靠肉眼观察效果。

1最容易犯的四个错误

按出现频率排,前两条就能解释大部分失效案例。

错误具体表现后果
缺返回链接A 指向 B,B 没有指回 A可能整组注解被忽略
缺少自引用每个版本没有列出自己该组声明不完整
代码写错用三字母语言码,或下划线连接,或只写地区部分或全部注解被忽略
地址非绝对写成相对地址无法解析,注解失效

还有一个隐藏杀手:把某个语言版本的 canonical 指向了主语言版本。这等于告诉搜索引擎忽略该版本,会把 hreflang 的努力直接抵消。

2代码与写法规则

这部分是纯格式要求,逐条对一遍即可。

语言代码用两字母
采用 ISO 639-1,例如中文写 zh、英文写 en,不是三字母缩写。
地区代码可选但格式固定
采用 ISO 3166-1 的两字母代码,用连字符与语言连接。下划线写法无效。
只写地区无效
必须语言在前。单独一个地区代码不构成合法的目标声明。
保留码会被忽略
留给其他用途的代码写在标签里会被直接忽略。要指向英国,用的是两字母的国家代码,而不是常见的那个缩写。
地址必须绝对
要带协议,形如完整的 https:// 开头的地址,不能写成相对路径。
别和其它属性混写
一个标签只承载一条 hreflang 声明,不要和别的替代关系属性混在一起。

代码写错属于「静默失效」里最冤的一类:标签在那,看着没毛病,搜索引擎却直接跳过。写完用工具逐条核一遍最省事。

3按顺序自查

不需要工具也能查出大部分问题,照下面走一遍。

  1. 列出站内所有语言或地区版本,做成一张对照表,先确认每一对「谁指向谁」都成对。
  2. 打开每个版本,确认它的标签集合里包含自己,并且和对照表完全一致。
  3. 逐条核对语言与地区代码,特别注意有没有误用保留码。
  4. 检查地址是否都是带协议的绝对地址。
  5. 检查每个版本的 canonical 是否指向自己。
  6. 最后确认只用了一种实现方式(页面标签、响应头、站点地图),不要在多个位置同时维护同一组声明。

相关疑问

配了 hreflang 但流量没变化,是不是没生效?

hreflang 不会带来可见的排名提升,它只是把用户导向更合适的版本。想验证效果,看的是各语言版本的展示量与跳出率变化,而不是总流量。

必须加默认兜底的那一条吗?

不是强制要求,但强烈建议。缺少它时,语言匹配不上任何版本的访客只能由搜索引擎自行猜测,猜错时会把用户送到不合适的语言页。

可以用站点地图代替页面标签吗?

可以,两种方式地位等价。页面数量很多时用站点地图更好维护,但要保证声明完整且双向。关键是选定一种并保持一致,不要混用。

内容翻译得不完整,也算重复内容吗?

只有主体内容未翻译时才会被视作重复。只翻译导航和页脚这类框架内容的情形,恰恰是这类注解的典型适用场景。

内容标识:本页内容由人工智能辅助生成,并经人工核对与编辑。详见 人工智能生成内容标识说明。
内容说明:本页针对具体使用问题作答,方法步骤与数值由本站自行整理与复算,事实性内容以对应官方规范与文档为准。内容最后核对日期:2026-10-08。若发现错误,欢迎通过页脚反馈入口告知。