一个商品列表页,如果同时提供品牌、价格区间、颜色、尺码、排序方式和分页,理论上能拼出的 URL 组合可以达到几千甚至几万条。这些地址大多由同一批内容生成,却会被蜘蛛当成独立 URL 排队。抓取预算再宽裕,也经不起这样摊薄。
参数是怎么把地址数量放大的
常见的情况有三类:
- 组合爆炸:每个筛选维度都是一次乘法。五个品牌、四个价格区间、六种颜色、三种排序,再乘上二十页分页,数字很快就上去了。
- 顺序与写法不统一:同一组筛选条件,参数顺序颠倒一下,或者大小写、尾斜杠不同,在蜘蛛眼里就是两个地址,内容却完全一样。
- 会变化的临时参数:会话标识、来源追踪、时间戳这类参数每次访问都可能不同,等于给同一个页面不断生成新地址。
除此之外,站内搜索结果页也常被忽略。用户搜完词把链接分享出去,蜘蛛顺着这条分享链接抓到搜索结果页,页面上又列出一批带参数的地址,路径就是这样越长越乱。
蜘蛛为什么会走进这些地址
多半是站点自己把路铺好的:筛选按钮是可点链接、列表页底部的推荐里带着参数、站点地图中混入了带参数的地址、内链没有区分规范版本。蜘蛛顺着内链一条条走,自然就把它们排进了抓取队列。
先判断:这些页面值不值得被单独抓
不是所有参数页都该清理。有些筛选组合本身有稳定的搜索需求,比如某个品牌搭配某个价位段的列表,用户会主动去搜。这类页面如果内容组织得清楚,可以保留独立的抓取与收录。真正需要收敛的是那些没有独立价值、只是机械组合出来的地址。
几种收敛手段,以及各自的代价
内链只指向规范版本
把分面链接统一指向不带多余参数的地址,或者让排序、视图切换这类操作不产生新的可抓链接。这是最温和的做法,不挡蜘蛛,只是不给它多余的入口。
统一参数的书写
固定参数顺序、去掉默认值和空值参数,让同一个页面只有一种地址形态。这一步放在服务器或 CDN 层就能做,成本低,见效相对直接。
canonical 指向主体页面
对没有独立价值的参数组合,让 canonical 指向对应的主列表页。要留意的是一刀切的风险:如果 canonical 指向的页面与当前页内容差异较大,这个信号可能被忽略,反而让判断更混乱。
robots.txt 屏蔽
屏蔽能直接减少抓取,但蜘蛛也就看不到页面内容,同样看不到里面的 canonical 和 noindex。已经被收录的地址不会因为屏蔽而消失。所以它更适合用在本来就不需要收录、也不承担传递链接作用的地址上。
站点地图只放规范地址
站点地图是一份主动提交的名单。如果里面塞满了参数组合,等于自己提醒蜘蛛来抓。把它限定在真正希望被抓的 URL 上,才符合它原本的用途。
怎么确认收敛有没有生效
- 看服务器日志里带参数请求的占比,以及这些请求集中在哪些参数组合上。
- 看抓取统计中「已发现但未编入索引」「重复网页」的数量变化。
- 看主体列表页的抓取频率和响应时间有没有回升。
- 抽样几条参数地址,确认返回的状态码和 canonical 是否符合预期。
参数治理不是一次性清理,而是要让内链、站点地图、页面模板和服务器规则保持一致。只改一处,蜘蛛还是会从另一条路走进来。
最后提醒一点:收敛的目标是让抓取集中到有意义的地址上,而不是把所有带参数的 URL 都当成麻烦。判断标准始终是同一个——这个页面有没有独立的内容和搜索价值。