面包屑导航常被当成纯用户体验组件,其实它在抓取路径里也承担着几件事:告诉蜘蛛这个页面处在什么位置,给深层页面提供一条通往上层目录的回链,顺带把一批同级页面串起来。它替代不了 Sitemap 和内链,但写得好,能让蜘蛛少走弯路。
蜘蛛从面包屑里能读到什么
一条典型的面包屑是“首页 > 分类 > 子分类 > 当前页”。蜘蛛解析后通常能得到三类信息:
- 层级关系:当前页与上级目录的从属关系,比单纯的 URL 路径更明确。
- 一组可抓链接:指向分类页、子分类页的链接,等于给蜘蛛提供向上、向侧的出口。
- 页面上下文:锚文本通常是分类名,能帮蜘蛛判断这个页面大致属于哪个主题。
注意它和点击深度不是一回事。面包屑让页面看起来在第四层,不代表蜘蛛只能从第四层入口进;反过来,面包屑也不保证蜘蛛一定会顺着它往上爬。它是路径之一,不是唯一路径。
写法上容易出问题的几个点
1. 中间层级做成了纯文本
当前页通常不给自己加链接,这没问题,但要确认中间层级是可点击的 a 标签,而不是 span 或列表文字。有些模板为了样式方便,把整条面包屑都渲染成静态文本,蜘蛛一个链接也读不到。
2. 靠 JS 才出现
面包屑由前端脚本拼出来后,能否被读到取决于渲染方式。比较稳妥的做法是首屏 HTML 里就带上,脚本只做样式或交互增强;如果只能客户端渲染,至少让链接在渲染后的 DOM 里是可解析的 a 标签,别拼接成按钮事件。
3. 只在详情页出现
分类页、聚合页同样需要向上回链。只给详情页加面包屑,等于把回链资源集中在最深处,而分类页反而更依赖这层结构来继续分发抓取。
4. 与 URL 目录、Sitemap 说法打架
面包屑显示“分类 A > 分类 B”,URL 却是 /category-c/123.html,Sitemap 里又挂在第三个目录下。信息互相矛盾时,蜘蛛会自己挑一个信,结果不一定是你想要的。三处尽量保持一致。
面包屑的作用是补充层级,不是修正层级。真正混乱的目录结构,靠一条导航条补不回来。
配合 Sitemap 和内链做兜底
把面包屑当成抓取路径的一环,而不是唯一入口,思路会清楚很多:
- Sitemap 负责把 URL 清单交给蜘蛛,保证页面“被知道”。
- 内链和列表页负责把抓取频次带到更深的位置。
- 面包屑负责给深层页面一条稳定的回程路,方便蜘蛛继续爬其他同级页面。
三者一致时,蜘蛛的抓取路径容易形成环,不至于在某个分支里断掉。反之,如果只靠面包屑撑起全部入口,一旦模板改版或脚本出错,深层页很容易变成事实上的孤岛。
怎么验证它真的起作用了
- 关掉 JS 抓取一次页面源码,看面包屑链接是否存在于 HTML 中。
- 用站内抓取工具查看某详情页的入站链接,除列表页外是否包含上级分类页。
- 在访问日志里按分类页 URL 过滤,看蜘蛛是否通过详情页里的面包屑访问到它。
- 抽几个深层页面,检查面包屑层级与实际目录、Sitemap 位置是否一致。
面包屑不是什么高深技巧,但它是那种平时不起眼、出问题却很难查的基建。把它写对、写一致,比事后到处补入口省事得多。