搜索引擎仅依据<html>标签的lang属性识别页面语言,必须严格使用BCP 47标准格式如zh-CN;lang与hreflang值须字面完全一致;SSR/静态页/SPA中lang需在首屏HTML中正确注入,局部多语言内容须显式标注。

没写 lang 或写错,Google 和 Bing 就可能把你的中文站当英文站索引——不是排名下降的问题,是压根不进中文搜索结果页。
为什么搜索引擎只认 <html lang="zh-CN"> 这一行
搜索引擎爬虫解析页面语言,第一且唯一依据就是 <html> 标签上的 lang 属性。它不看 <body lang="zh-CN">,也不猜内容里有多少个“的”“了”,更不会读你 <meta name="description"> 里的中文描述。
常见错误现象:
-
<html lang="zh">或<html lang="Chinese">:被识别为无效值,降级为und(未知语言) -
<html lang="zh_cn">(下划线):BCP 47 不合法,等同于没写 - SPA 切换语言后只改了
document.body.lang:爬虫抓取首屏时仍拿到旧lang,后续 JS 更新完全不可见
lang 和 hreflang 不匹配直接导致整组失效
Google 要求 <html lang="zh-CN"> 和 <link rel="alternate" hreflang="zh-CN" href="..."> 中的语言代码**字面完全一致**。大小写、连字符、空格都必须对齐。
立即学习“前端免费学习笔记(深入)”;
实操建议:
- 所有语言版本页面,
hreflang的值必须和自身<html>的lang值一模一样 - 用
https://support.google.com/webmasters/answer/189077验证 hreflang 是否被 Google 接收 - 在 Search Console 的「国际化」报告里,如果某组 hreflang 显示为“未验证”,大概率是
lang和hreflang对不上
局部多语言内容不加 lang 会拉低语义可信度
搜索引擎会扫描页面内文本与声明语言的一致性。主 lang="en",但大段产品参数表是中文且没加 <table lang="zh-CN">,Google 可能判定该页“语言混乱、内容质量存疑”,尤其影响长尾词如“上海签证材料模板”的排名。
必须显式标注的典型场景:
-
<blockquote lang="fr">引用法语文献 -
<pre lang="bash">或<code lang="python">代码块 -
<p lang="ja-JP">页面中插入的日文说明
注意::lang(zh) CSS 选择器能继承,但搜索引擎不认继承逻辑,只统计带 lang 属性的元素。
SSR、静态页、SPA 各自最容易漏掉的点
不同渲染模式下,lang 的注入时机和作用域完全不同,最容易在交接处出错。
SSR 页面:
- 服务端必须根据
Accept-Language或 URL 路径(如/ja/)生成对应<html lang="ja-JP"> - 不能依赖客户端 JS 补充,首屏 HTML 必须自带正确值
静态多语言站:
- 每个语言版本应是独立 HTML 文件,
lang硬编码,避免 JS 注入延迟导致闪动或爬虫抓到空lang - 别用同一份 HTML + JS 切换语言,那只是“看起来变了”
SPA:
- 切换语言时,必须执行
document.documentElement.lang = "zh-CN",而不是只改 state 或 class - 已渲染的 DOM 节点(如
<p>Hello</p>)不会自动继承新lang,需手动遍历关键节点重设,或干脆 reload 页面
真正难的不是写对那一行 lang="zh-CN",而是确保从 HTML 源码开始,到每一个 <pre>、<code>、<blockquote>,语言标识都可验证、可同步、不漂移。



















