事情本身不复杂,线索都在日志里。文章页的 BreadcrumbList 输出三层,第二层是分类聚合页,字段里只有 name 没有 item。结构化数据测试工具报缺少 item,必应里的面包屑富结果显示的是原始 URL。
第一反应是「position 从 0 开始编号,与规范要求的 1 起始不符,整条链被丢弃」,验证下来不成立。
真正麻烦的地方在于,几个原因的现象几乎一样。中间层用 span 渲染当前分类,模板里没有可用的链接地址就跳过了 item。还有一种是分类页被设成 noindex,输出时被判断为不可索引而抹掉了地址。
少数情况下是最后一层也写了 item,指向自身,被判定为无效环节。
取一篇线上文章看实际输出的 JSON-LD
curl -s https://www.lu0.cn/1.html | grep -A30 'BreadcrumbList'
给中间层补上绝对地址并按 1 起始排 position
接着用结构化数据校验接口复核
curl -s -X POST https://validator.schema.org/validate -d @crumb.json
末了让分类页恢复可索引并加进站点地图
恢复的判定其实很直接。改完当天校验工具不再报缺字段,两周后必应结果里文章标题下出现三级面包屑,点击率有小幅提升。
提醒一点。面包屑数据要和页面可见的导航一致,只在 JSON-LD 里补字段而页面不显示,属于典型的标记与内容不符。报错文案容易误导,真正的原因往往在相邻那一层的日志里。
