面包屑导航是页面上最不起眼的组件之一。它不带来流量,也不直接决定什么,但它同时在做两件事:告诉用户「我现在在哪」,以及告诉爬虫「这个页面挂在哪条路径下」。栏目调整过几轮之后,面包屑往往是最先失真的地方,而它恰好也是排查站点结构问题时成本最低的入手点。
面包屑需要回答的三个问题
- 这个页面的上级是谁,上级是否真实存在并可访问;
- 从首页走到这里经过了几层,层级是否和目录、导航一致;
- 同一篇内容是否存在多条路径,面包屑在各路径下是否自相矛盾。
把这三点写清楚,面包屑就不只是装饰,而是一张缩略版的站点地图。
常见的几种面包屑写法
层级式
按目录层级展开:首页 > 栏目 > 子栏目 > 当前页。结构稳定的资讯站、文档站、类目型电商最常用,也最容易和 URL 路径对齐。
属性式
按内容属性组织:首页 > 品牌 > 系列 > 型号 > 产品。页面在物理目录上可能分散在不同位置,但逻辑上归入同一条路径。属性式需要额外维护一份属性映射,否则很容易出现某一层的链接无处可指。
位置式(访问路径式)
基于用户当次访问轨迹,例如 首页 > 搜索结果 > 详情页。它随会话变化,每次抓取看到的文本都不同,更适合站内应用导航,不建议作为结构信号使用。
关键词堆砌式
把热门词、标签词硬塞进面包屑,与页面真实层级无关。这种做法既不帮助用户,也让爬虫对页面主题的判断变模糊,通常得不偿失。
面包屑与真实目录结构的关系
最理想的状态是三层对齐:主导航、URL 路径、面包屑表达的层级一致。实际运营中很难完全做到,但至少要保证逻辑自洽——不能出现面包屑写着 A 栏目,URL 和左侧导航却指向 B 栏目的情况。
改版、栏目合并、内容二次归档之后,务必回头同步面包屑。很多站点的问题不是面包屑写错,而是站点早就变了,面包屑还停留在旧结构上,指向一堆积压的重定向甚至死链。
面包屑是结构的表达,不是关键词的容器。先想清楚页面归属,再去考虑怎么写文案。
结构化数据标注的几个要点
- 使用 BreadcrumbList,itemListElement 按顺序排列,position 从 1 开始连续编号,不要跳号;
- 最后一项通常表示当前页,可以不给 item,或给自身 URL,但不要在页面上做成可点击的自链接;
- 标记内容必须和页面上可见的面包屑一致,不能只写标记而页面上不展示,也不建议反过来;
- 分隔符用统一的符号即可,符号本身不影响什么,但前后不一致会让文本解析变得混乱。
一份可以直接照着做的自查清单
- 除首页外的每个可访问页面,是否都有面包屑;
- 第一层是否稳定指向首页,且首页链接可用;
- 最后一层是否为当前页,且不可点击、不产生自环;
- 面包屑中的每一层链接,是否都返回正常状态码;
- 层级与 URL 路径、栏目导航是否对得上;
- 是否把筛选参数、排序参数混进了面包屑;
- 移动端是否被折叠隐藏到完全不可见;
- 同一内容在不同入口下,面包屑是否出现两种以上版本;
- 层级是否过深,超过四层的考虑把栏目压平或合并。
常见问题
比较典型的有几类:面包屑指向的中间层其实是 302 跳转,用户和爬虫都要多绕一步;面包屑里带上 ?page=2 之类参数,导致同一栏目衍生出大量变体;还有站点把面包屑做成标签云的形态,视觉上像导航,语义上什么也没表达。
另外,面包屑不是必选组件。单层结构的小站、只有几个页面的落地页站点,不加也完全可以。但只要站点有了两级以上的内容组织,它就是一个几乎零成本、可长期复用的结构说明。
建议把它纳入改版和内容归档的例行检查项:每次调整栏目,顺手看一眼面包屑是否还指向真实存在的层级。这件事花不了几分钟,却能避免结构信息长期漂移。