一个带筛选功能的列表页,往往能自动生成成百上千个地址:颜色、尺码、价格区间、排序方式、页码,再混进投放用的追踪参数。对用户来说这很方便,对搜索引擎来说,这些地址大多是同一批内容的不同排列。放任不管,蜘蛛的抓取额度会耗在大量近似页面上,真正需要被收录的页面反而排不上队。
先给参数分个类
处理方式取决于参数会带来什么变化,可以先按下面四类归一下:
- 追踪类:utm_source、gclid、from、spm 之类,纯粹用于统计,对页面内容没有任何影响。
- 排序与视图类:sort、order、view、list_mode,内容集合相同,只是顺序或展示方式不同。
- 筛选类:color、size、price_min 等,可能组合出有意义的新页面,也可能只是空结果页。
- 分页类:page、p,通常属于内容的一部分,但深度越深,价值越低。
分类之后你会发现,真正值得让蜘蛛抓的其实没几个,大部分地址是工具和前端交互顺手产生的副产品。
能收敛就别让它炸开
- 追踪参数优先在入口处处理。在服务器或 CDN 层识别并忽略这些参数,或把带参地址 301 到干净地址。至少要做到站内链接不带追踪参数,否则蜘蛛顺着内链爬一圈,就会带出一整套重复地址。
- 排序和视图参数用 canonical 收敛。让这些地址的规范版本指向默认视图,站内也只用不带参的默认地址做链接。canonical 是提示不是强制,所以别指望它单独解决问题,内链一致才是关键。
- 筛选组合先筛选再决定去留。先看哪些筛选组合确实有独立搜索需求,这类可以做成可索引的落地页;其余组合让它们只在用户点击时通过 AJAX 或表单触发,不进入可抓取的链接体系。
- 用 robots.txt 挡住并不等于不会被索引。如果外部有链接指向某个被屏蔽的带参地址,它仍可能以「无摘要」的形式出现在结果里。真要让它彻底消失,用 noindex 更稳妥,但前提是这个页面本身能被抓取到。
- 分页保留可抓取,但控制暴露深度。不要把几十分页的链接全塞进页脚,可以只保留前后几页,配合「查看全部」或加载更多的方式减少地址数量。
站内链接是最容易失控的一环
很多参数地址不是外链带进来的,而是自己站内的按钮和跳转造出来的。检查三件事:排序按钮是否生成了 a 标签;站内跳转时是否把当前页的参数一路带下去;模板里的面包屑和导航是否只输出规范地址。把这几处收干净,参数地址的数量通常会立刻下降一大截。
怎么验证有没有做对
- 在服务器日志里统计带参地址的抓取次数占总抓取的比例,处理前后做对比。
- 在索引报告的「已排除」里按原因分组,看重复、已发现未抓取、被 robots.txt 屏蔽的条目是不是集中在参数地址上。
- 抽查几个典型参数组合,确认它们返回的规范地址、状态码和 meta 指令符合预期。
参数处理没有一劳永逸的开关。列表页会改版,前端框架会换,追踪参数也会变,所以更适合的做法是把它当成一项定期检查的工作,而不是上线时配一次就结束的任务。
回到最基本的原则:一个内容尽量只有一个主地址,其余变体能收敛就收敛;实在收敛不了的,至少别主动把它们喂给蜘蛛。