lang属性必须写在<html>标签上,如<html lang="zh-CN">,写在body或子元素无效;错误位置或非法格式(如zh_CN、ZH-CN)会导致SEO降权、翻译失效、语音朗读错乱。

lang属性写错位置会导致整页语言信号失效
浏览器和爬虫只认 <html lang="zh-CN"> 这个根声明,改 document.body.lang 或局部 <div lang="en"> 对 SEO、自动翻译、字体 fallback 几乎没影响。常见错误包括:
- SPA 切换语言时只更新
body.lang,VoiceOver 仍用旧语种朗读 - 后端返回
zh_ch,前端未标准化就直接赋给document.documentElement.lang - 写成
zh_CN(下划线)、ZH-CN(大写)或末尾带空格,等于没写
必须用 BCP 47 标准格式:小写字母 + 连字符 + 地区码,如 zh-Hans、ja-JP。简繁体差异会影响拼音标注和语音引擎选择,不能模糊写 zh。
DOM嵌套超6层会触发爬虫硬截断
搜索引擎爬虫流式解析 HTML,DOM 树深度超过 6 层时会主动终止解析——不是配置问题,是内存与超时限制导致的硬性截断。<div><div><div><div><div><div><h2>被跳过</h2></div></div></div></div></div></div> 这类结构中,<h2> 及其子节点根本不会进索引。
- 纯
<div>堆叠最危险;<section>、<article>等语义标签能重置嵌套计数 -
<table>嵌套尤其敏感,<td>内再套<div>会加速触发截断 - SSR/SSG 页面必须确保首屏 HTML 包含且仅有一个
<main>,JS 动态注入晚于 500ms 等同于没写
隐藏元素的写法决定内容是否被爬虫读取
display: none 和 visibility: hidden 会被 Google、Bing、百度等主流爬虫直接跳过——不是“隐藏但可读”,而是“结构上被丢弃”。典型误用:
将调研报告、方案对比、数据分析、需求梳理、会议纪要、设计说明、代码评审、学习笔记等任务产物输出为可在浏览器直接打开的单文件 HTML,替代 Markdown 作为最终交付物。Markdown 在信息密度、视觉清晰度和可分享性上已跟不上 AI 产物的丰富度,HTML 能同时承载排版、表格、SVG 等。
立即学习“前端免费学习笔记(深入)”;
- 用
display: none隐藏冗余<h1>(比如 logo 文字),向爬虫发送矛盾信号,可能标记为“隐藏文本风险” - 真正需保留 SEO 可见性的场景(如响应式菜单、无障碍辅助文本),应改用
clip-path: inset(100%)或position: absolute; width: 1px; height: 1px; margin: -1px; overflow: hidden; - HTML 注释里堆砌关键词(如
<!-- SEO优化,前端开发 -->)会被风控模型识别为低质信号,尤其重复超 3 次时
title属性和标签混淆会直接削弱主题识别
<title> 是搜索引擎判断页面主题的首要依据,权重远高于 title 属性。后者仅用于悬停提示和屏幕阅读器播报,不参与排名。
- 导航链接里写
title="SEO教程|免费下载"对排名零作用 - 动态站点中,Vue/React 路由切换后未更新
<title>,或只调document.title = ...而首屏源码仍是默认值,爬虫根本看不到新标题 -
<title>必须与lang同步切换;西班牙语页面返回中文<title>,搜索引擎会判定内容与语言严重不符
验证是否生效的唯一可靠方式:右键 →「查看页面源代码」,搜索 <title>,确认是真实文本、无占位符、且与当前页面匹配。大型门户常因模板复用、多语言切换延迟或 SSR 渲染链路断裂,在这几个点上批量失效——问题不在单个属性,而在它们之间的协同断裂。


















