html中仅用nav+ol写面包屑对seo几乎没用;真正起作用的是严格符合规范的json-ld breadcrumblist标记——漏掉它,搜索结果就不会出现富片段。

直接说结论:HTML结构里用nav + ol写面包屑,对SEO本身几乎没用;真正起作用的是紧随其后的JSON-LD格式的BreadcrumbList标记——漏掉它,搜索结果里就不会出现富片段。
为什么
搜索引擎(尤其是 Google)不靠 DOM 层级推断“首页 → 分类 → 文章”这种逻辑关系。只写<nav aria-label="Breadcrumb"><ol>
<li>首页</li>
<li>分类</li>
<li aria-current="page">文章</li>
</ol></nav>,屏幕阅读器能读、用户能看,但爬虫不会从中提取路径语义。
- 常见错误是把面包屑塞进
div或p,连可访问性都丢了,更别说 SEO -
aria-label="Breadcrumb"必须写,不写的话屏幕阅读器可能当成普通文本朗读 -
aria-current="page"不能省,否则末项语义断裂,辅助技术无法识别“这是当前页” - 分隔符(如
/或>)必须用span包裹,否则会被朗读出来,干扰体验
JSON-LD 的 BreadcrumbList 必须严格满足五项硬约束
Google Structured Data Testing Tool 或 Search Console 一报错,基本就在这五点里:
-
@context必须是"https://schema.org"(注意是https,不是http,也不是拼错成schmea) -
@type必须是"BreadcrumbList"(大小写敏感,breadcrumblist或Breadcrumb都无效) -
itemListElement必须是数组,每个元素含@type: "ListItem"、position(从1开始连续整数)、name和item -
item字段必须是对象,至少含@id(推荐绝对 URL)或name;只写字符串如"https://example.com/"会校验失败 -
position值必须是数字类型(不是字符串"1"),且不能跳号(1,2,4不行)、不能从0起
动态生成时最容易崩的三个点
电商、文档站这类多级路径站点,硬编码 JSON-LD 不现实,但动态注入极易出错:
Google索引API工具。用于提交URL以供Google索引。支持两种模式:“auto-index”(获取sitemap,与缓存对比差异并提交...)
- 用
location.pathname在客户端解析路径再拼 JSON-LD?SSR 页面首屏无数据,爬虫看到空 script 或默认占位符 - 把 URL 段(如
electronics/headphones/wh-1000xm5)直接当name用?wh-1000xm5不是用户语言,应查表转为“WH-1000XM5 降噪耳机” - 过滤查询参数后没校验
<link rel="canonical">?带?color=red的 URL 若没设 canonical,可能被当重复页,连带面包屑标记失效
script 标签位置和转义比内容本身更容易翻车
哪怕 JSON 写得完全正确,下面两点一错,整个标记就白写:
-
<script type="application/ld+json"></script>必须写全,漏掉type属性、或写成text/json、application/json,Google 直接忽略 - JSON-LD 必须放在
或顶部,不能嵌在div或section里;JS 动态插入的,多数爬虫不执行 - 服务端模板中插变量时,
name含单引号或 HTML 实体(如&)必须转义,否则 JSON 结构崩掉 - 本地开发用
http://localhost:3000/测试,上线后忘了替换成正式域名,所有@id返回 404
真正起作用的不是“写了结构化数据”,而是 URL 路径、HTML 面包屑、JSON-LD 三者是否在任意抓取环境(不同设备、不同渲染时机)下都稳定一致。其中任意一环不稳,增益就会打折扣甚至反向干扰。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










