必须使用 https://schema.org/BreadcrumbList,首字母大写、协议为 HTTPS、无尾部斜杠;每项用 ListItem 且 position 从 1 开始连续递增;优先 JSON-LD;item 必须为绝对 URL。

itemtype 必须用 https://schema.org/BreadcrumbList,别写错协议或大小写
HTML 中的 itemtype 不是随便填个字符串就行。标记面包屑导航时,必须严格使用 https://schema.org/BreadcrumbList ——注意是 https(不是 http),末尾没有斜杠,BreadcrumbList 首字母大写、无空格、无连字符。
常见错误包括:
- 写成
http://schema.org/BreadcrumbList(Google 已不推荐 HTTP 协议) - 写成
https://schema.org/breadcrumblist(大小写敏感,小写会失效) - 漏掉
https://直接写schema.org/BreadcrumbList(解析失败)
验证是否生效,最直接的方式是把页面丢进 Google Search Console 的 URL 检查工具,看结构化数据报告里有没有识别出 BreadcrumbList。
每个面包屑项要用 ListItem,且 position 必须从 1 开始连续递增
BreadcrumbList 下的每一级导航项(如“首页 > 分类 > 文章”)都得用 ListItem 类型包裹,并通过 position 明确顺序。这个序号不是可选的,Google 要求它从 1 开始,且不能跳号、不能重复。
立即学习“前端免费学习笔记(深入)”;
实操要点:
-
position是数字类型,写成"1"或1都可以(JSON-LD 中建议用数字,Microdata 中用字符串也接受) - 第一项必须是
position: 1(通常是首页),最后一项是当前页,position值等于总层级数 - 如果动态生成面包屑,后端或模板引擎要确保
position是严格递增的整数,别用循环索引i却从 0 开始
例如三级路径 /blog/react/intro,对应 position 应为 1(首页)、2(blog)、3(react)、4(intro)——共 4 项,不是 3 项。
用 Microdata 还是 JSON-LD?优先选 JSON-LD,更稳定、易维护
虽然 Microdata 可以直接嵌在 <nav> 或 <ol> 标签里,但实际项目中 JSON-LD 更可靠:
- Microdata 容易因 HTML 结构微调(比如加了
<span>包裹、调整 class)导致itemprop断链 - JSON-LD 放在
<head>或页面底部,完全脱离 DOM 结构,CMS 或 SSR 渲染时不易出错 - Google 明确表示对 JSON-LD 的支持最完整,包括
name和item的自动补全逻辑
一个最小可用的 JSON-LD 示例:
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [{
"@type": "ListItem",
"position": 1,
"name": "首页",
"item": "https://example.com/"
}, {
"@type": "ListItem",
"position": 2,
"name": "博客",
"item": "https://example.com/blog/"
}, {
"@type": "ListItem",
"position": 3,
"name": "React 入门",
"item": "https://example.com/blog/react/intro"
}]
}
item 字段必须填绝对 URL,不能用相对路径或空字符串
每个 ListItem 的 item 属性,代表该层级的可访问链接。Google 要求它是完整的、可抓取的绝对 URL:
- ✅ 正确:
"https://example.com/blog/" - ❌ 错误:
"/blog/"(相对路径,Google 不解析) - ❌ 错误:
""或null(当前页不能留空,哪怕就是本页也要填当前 URL) - ❌ 错误:
"#"或"javascript:void(0)"(不可抓取,会被忽略)
特别注意:最后一级(当前页)的 item 也必须填当前页面的完整 URL,不能省略。否则 Google 可能只渲染前 N−1 级,面包屑显示不全。
如果站点启用了 CDN 或多域部署(如 www / non-www),确保所有 item URL 与 href 实际跳转地址一致,否则可能触发“URL 不匹配”警告。



















