现场是这样的。面包屑最后一级用 span 加 aria-current=page 表示当前位置,但里面只放了一个图标,没有文字,结构化数据里这一级 name 是空的,搜索结果的路径展示只剩前两级。
中间走过弯路,把「模板把标题截断成 0 字时没有兜底」当成主因,改完现象没变。
把日志和配置对完,能解释这个现象的基本就这几处。末级节点只有图标,没有可读文本;JSON-LD 里 name 取了图标的 alt,值为空字符串;BreadcrumbList 仍输出了这一级,item 为空。
上来先查看面包屑末级实际的 DOM 文本
curl -s https://www.example.com/post/1024 | grep -o '<span[^>]*aria-current[^>]*>.*</span>' | head -c 200
给末级补上文章标题文本
echo '<span aria-current="page">nginx 配置示例</span>'
校验 JSON-LD 里每一级 name 非空
curl -s https://www.example.com/post/1024 | grep -o '"name":"[^"]*"'
等前面都确认过,再用结构化数据测试工具复查整条链路
curl -s 'https://validator.schema.org/validate?url=https://www.example.com/post/1024' | head -c 200
怎么算真的好了,看的是同一批现象。末级节点有可见文字,JSON-LD 三级 name 均非空,搜索结果里的面包屑恢复成完整路径。
图标不能代替文字,aria 属性只对辅助技术有效,蜘蛛读的还是节点里的文本内容。如果同一现象隔几天又出现,说明根因没找到,别当偶发处理。
