hreflang标签必须成组出现且全覆盖,每个语言版本页面的中需包含指向所有语言-地区变体(含自身)的link标签;漏掉任一版本将导致整组失效,且代码须严格遵循ISO标准、全小写、无空格、协议一致,并确保URL返回200及对应语言内容。

hreflang标签必须成对/成组出现,单个写等于没写
Google 明确要求:每个语言版本的页面, 中必须包含指向**所有已知语言+地区变体**的 标签,包括它自己(即“自我指向”)。漏掉任意一个,整组标签可能被忽略。
常见错误现象:
– 搜索引擎只索引了英文页,中文页始终不进搜索结果
– Google Search Console 报告 “hreflang 未验证” 或 “hreflang 循环缺失”
– 用户从法语搜索进入网站后,跳转到英文页而非法语页
- 例如有三个版本:
https://example.com/(默认 en-US)、https://example.com/zh-cn/、https://example.com/es-es/,那么每个页面的都要放这三条:
注意:hreflang="x-default" 不是可选项,而是推荐项——它应指向用户语言未匹配时的兜底页(如首页或语言选择器页),但不能替代具体语言标签。
语言-地区代码必须严格遵循 ISO 标准,拼错一个字母就失效
不是靠经验猜,也不是按国家域名缩写写。比如 “英国英语” 是 en-gb,不是 en-uk;“日本日语” 是 ja-jp,不是 jp-jp 或 ja-japan;“简体中文(中国)” 是 zh-cn,不是 zh-chs 或 cn-zh。
容易踩的坑:
– 混淆大小写:EN-GB 和 en-gb 效果相同,但建议全小写以避免模板渲染异常
– 多余空格或引号:hreflang= "en-us"(带空格)或 hreflang='en-us'(单引号)在部分 CMS 中会解析失败
– 用 HTTP 协议不一致的 URL:http:// 和 https:// 被视为不同页面,hreflang 关系会断裂
查证方式:优先使用维基百科的权威列表:
– 语言代码(ISO 639-1):ISO 639-1 代码表
– 国家/地区代码(ISO 3166-1):国家地区代码表
hreflang 不是万能的,它只管“告诉”,不管“强制跳转”
很多开发者误以为加了 hreflang 就能自动把法国访客重定向到法语页——这是错的。hreflang 只影响搜索引擎如何展示结果,不影响浏览器行为。用户直接访问 /,还是会看到默认页,除非你额外部署 JS 或服务端逻辑做语言探测与跳转。
真实使用场景:
– 用户在 Google.fr 搜索 “chaussures de sport”,Google 看到你的 fr-fr 页面有对应 hreflang,就更可能展示该链接
– 同一内容的英文页和德文页不会因相似度高被判定为重复内容,避免排名稀释
– 没有设置 hreflang 的多语言站,常被 Google 仅索引其中一个版本,其余“消失”
性能影响极小:所有 标签都在 HTML head 中,体积增加几字节,无加载延迟。但若通过 JavaScript 动态注入(如 SPA 中用 document.head.appendChild()),Google 可能无法抓取到——必须服务端渲染或静态生成时写入 HTML 源码。
大型站点别硬编码,用 XML Sitemap + 自动化校验更可靠
超过 50 个语言-页面组合时,手工维护 中的 hreflang 几乎必然出错。此时应改用 XML Sitemap 方式声明,并确保每个 下嵌套完整 组。
关键实操建议:
– 在 Sitemap 中每条 必须包含全部语言变体的
– Sitemap 文件需声明命名空间:xmlns:xhtml="http://www.w3.org/1999/xhtml"
– 提交前用 Google 的 hreflang 测试工具 或开源 CLI 工具(如 hreflang-validator)批量校验循环完整性与 URL 可访问性
– 避免混合使用:不要一部分页面用 HTML 写,另一部分用 Sitemap 写,Google 可能只采信其中一种
最容易被忽略的一点:所有 hreflang 声明中的 URL,必须返回 HTTP 200 状态码且内容真实匹配该语言——如果 zh-cn 页面实际返回的是英文文案,或者该 URL 重定向到了其他地址,Google 会直接丢弃整组关系。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











