H1标签是页面唯一核心主题的语义声明,必须且只能有一个;应代表整页主旨而非网站名、按钮或弹窗标题,CMS模板常因全局硬编码导致重复,需通过工程化手段确保全链路合规。

H1 标签不是“页面第一个大字”,而是告诉搜索引擎和屏幕阅读器“这个页面到底在讲什么”。一个页面必须且只能有一个 ,否则会稀释主题权重、干扰辅助技术、破坏 SEO 结构。
怎么判断该不该用 ?
看内容是否代表整页唯一核心主题——不是网站名、导航栏文字、Logo、欢迎语,也不是弹窗或侧边栏标题。
-
✅ 页面就是完成下单后的确认流程订单确认
-
✅ 错误页的语义主体就是这个状态404 页面未找到
-
✅ 整篇文章围绕该主题展开React 性能优化指南
-
❌ 这是品牌标识,应放在MySite
里用或❌ 是操作按钮文案,属于交互元素,不是主题声明立即购买
为什么 CMS 模板常出错?
多数模板在全局 Layout 中硬编码了
,又在文章组件里再塞一个MySite
,结果页面出现两个XXX
。- 解决方法:Layout 文件中彻底移除
,改用或纯语义中立容器 - 让具体页面组件负责输出唯一
,并通过框架能力确保服务端已渲染(如 Next.js 的generateMetadata、Nuxt 的definePageMeta) - 若用静态生成(SSG),检查构建后 HTML 源码,确认
出现且仅出现一次
动态插入时容易忽略的陷阱
JS 渲染内容(比如模态框、Tab 切换面板、懒加载区块)如果擅自加
,会破坏整页层级结构。- 弹窗、抽屉、Tooltip 等附属界面一律禁用
;主标题仍由外层页面控制 - 可用
或带aria-labelledby的替代(仅限极特殊无障碍场景)- 服务端渲染(SSR)页面若在客户端二次 hydrate 时覆盖了
,会导致首屏与最终 DOM 不一致,被 Lighthouse 报告为“标题缺失”真正难的不是写对
,而是让整个工程链路(模板、CMS、组件库、SSR 配置、前端路由)都默认遵守“单页单主标题”规则——一旦某处松动,就可能在生产环境埋下 SEO 和可访问性隐患。 - 服务端渲染(SSR)页面若在客户端二次 hydrate 时覆盖了











