hreflang标签必须在所有语言版本页面的中完整互指,每页均需包含全部语言版本(含x-default)的绝对url链接,且hreflang值须符合bcp 47规范、不可重复,与lang属性无关,配置后须用gsc验证闭环连通性。

hreflang 标签不是“加了就生效”的开关,它必须在每个语言页面的 中完整互指全部版本,漏掉任意一个链接,整组页面都可能被搜索引擎降权或错配流量。
hreflang 必须成对互指,不能只写单向
常见错误是只在英文页里加 <link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/">,却忘了在中文页里补上回指英文页的 <link rel="alternate" hreflang="en" href="https://example.com/en/">。搜索引擎会把这理解为“中文页没有对应英文版”,从而放弃索引或错配流量。
正确做法是:每个语言页都要列出所有语言版本(含自己),包括可选的 x-default:
<link rel="alternate" hreflang="en" href="https://example.com/en/"><link rel="alternate" hreflang="zh-CN" href="https://example.com/zh/"><link rel="alternate" hreflang="ja" href="https://example.com/ja/"><link rel="alternate" hreflang="x-default" href="https://example.com/en/">
- 每条
href必须是绝对 URL,相对路径会被忽略 - 每个
hreflang值必须符合 BCP 47 规范(如zh-Hans可用,zh_CN或chinese无效) - 同一页面中不能重复声明同一
hreflang值(比如两个hreflang="en")
hreflang 和 lang 属性完全无关,别混用
hreflang 是给搜索引擎爬虫看的链接关系,lang 是给浏览器和辅助技术(如屏幕阅读器)看的内容语言。两者职责不同,强行绑定会导致翻车。
典型错误场景:
- 英文页
,但嵌入一段中文说明没加<p lang="zh-CN"></p>→ 屏幕阅读器用英语念中文词 - 中文页写了
hreflang="en"指向英文版,但英文版的lang仍是"zh-CN"→ 搜索引擎收了hreflang,浏览器却当它是中文页渲染
URL 结构决定 hreflang 配置粒度
hreflang 绑定的是具体 URL,不是语言逻辑。如果你用参数路由(如 ?lang=zh),Google 明确不推荐——它可能忽略参数版 hreflang,或误判为重复内容。
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
实际操作中应优先采用:
- 子目录结构(
/en/、/zh/):每个目录下独立配置hreflang - 子域名结构(
en.example.com、zh.example.com):同样需每个子域名页面完整互指 - 避免混合结构(如
/en/?v=2)或哈希路由(#lang=fr),这些无法被爬虫稳定识别
配置完成后务必用 Google Search Console 的「国际化目标」报告验证连通性,检查是否所有版本都被识别为闭环。
Redoc 或静态文档生成工具中的 hreflang 实现
像 Redoc 这类工具生成的 API 文档,若支持多语言(如 /en/openapi.yaml、/zh-CN/openapi.yaml),其最终输出的 HTML 模板必须手动注入 hreflang 标签。
关键点:
- 不能依赖工具自动生成——Redoc 默认不处理
hreflang,需修改index.tpl.html模板 - 每个语言版本的 HTML 输出必须包含全部语言的
<link rel="alternate" hreflang="...">,且href指向对应子目录下的index.html - Nginx 等 Web 服务器需正确配置路由(如
location ~ ^/([a-z]{2}(-[A-Z]{2})?)/),确保各语言 URL 可访问且不重定向
最易被忽略的是:生成后的 HTML 文件必须真实存在并返回 200 状态码;任何 301/404/500 都会让 hreflang 失效,而这类问题在本地预览时完全暴露不出来。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










