lang属性本身不直接影响排名,但写错或缺失会导致hreflang被Google静默忽略,使整组区域化策略失效;必须严格遵循BCP 47规范(如zh-CN,禁用zh_cn、Chinese等),且全站DOM中每段非主语言文本均需显式标注lang。

lang 属性本身不直接参与排名计算,但它决定了搜索引擎是否“信你”——写错或缺失,hreflang 就失效,整套区域化内容策略就崩在起始点。
为什么 Google 会忽略你的 hreflang
Google 要求 <html lang="zh-CN"> 和 <link rel="alternate" hreflang="zh-CN" href="..."> 的语言代码**完全一致**:大小写、连字符、无空格。一个写 zh-cn,另一个写 zh-CN,它就判定为矛盾信号,静默丢弃整组 hreflang 声明。
常见无效写法包括:zh_cn(下划线)、Chinese(非 BCP 47)、zh-CN (末尾空格)、ZH-CN(大写)。这些都会让 hreflang 彻底失效。
验证方式:用 Google Search Console 的「URL 检查」工具抓取页面,看「国际化」标签页是否列出有效 hreflang 对应关系。
立即学习“前端免费学习笔记(深入)”;
lang 写错导致中文内容被当英文索引
没设 lang,或设成 lang="en" 却放满中文内容,Google 会按请求头 Accept-Language 或默认 en 来索引——结果就是:中文用户搜“上海签证材料”,你的页面根本不出现在前 100 名。
更隐蔽的问题是局部混排:主 <html lang="en">,但产品描述大段中文且没加 <p lang="zh-CN">,Google 可能判定“语言混杂、质量存疑”,尤其打压长尾词权重。
注意:lang 不靠继承生效于 SEO —— 搜索引擎只认显式声明的节点,:lang(zh) 这类 CSS 选择器对爬虫无效。
SPA 切换语言时,document.documentElement.lang 不是唯一要改的地方
只执行 document.documentElement.lang = "ja-JP",已渲染的 DOM 节点(比如 <p>、<div>)仍带着旧 lang 属性,屏幕阅读器和搜索引擎看到的仍是旧语言上下文。
必须同步处理:
- 所有已挂载的文本容器节点,需手动遍历并更新其
lang属性(或重渲染) - 动态插入的内容(如富文本、第三方评论插件)必须在插入前显式设置
lang,否则无语言上下文 - Shadow DOM 中
lang不自动继承,需在每个 shadow root 内单独设置
简体中文该用 zh-CN 还是 zh-Hans
优先选 zh-CN。部分浏览器(如 Safari)对 zh 的语音支持不稳定;zh-Hans 虽属现代标准,但某些旧版 TTS 引擎识别率低;zh-TW 在部分 :lang() CSS 匹配中不准。
真正难的不是选对一个值,而是确保整个 DOM 树里每段文本——从 SSR 渲染的首屏、到 React/Vue 动态生成的卡片、再到用户粘贴进富文本编辑器的外文引用——都带着准确、可验证、可同步的语言标识。漏掉任意一环,语义链就断了。



















