当一个页面可以通过多组参数组合访问时,蜘蛛会把这些组合当成不同的 URL 分别发现。常见的情况是:同一批商品既有颜色筛选、价格排序,又有分页和追踪参数,URL 数量在短时间内成倍增长。抓取预算并没有增加,结果就是真正需要更新的页面回访变慢。
先确认哪些参数真的改变了内容
不是所有参数都值得被当作独立页面。可以抽样对比:去掉参数后,HTML 主体、标题、主要文本是否基本一致;如果只是排序不同或筛选后项目顺序变化,内容重叠度很高,通常不需要独立抓取。
- 筛选参数:同一分类下不同条件的结果页,若只是项目子集变化,需评估是否有独立搜索需求。
- 排序参数:按价格、销量、上架时间排序,通常内容相同,只是顺序不同。
- 分页参数:已有分页序列的讨论,这里关注的是分页与筛选叠加后产生的组合数量。
- 追踪参数:来源、活动、会话 ID 等,不应出现在站内链接中,也不应被蜘蛛大量发现。
- 展示参数:列表视图、网格视图、每页数量等,多数情况下不影响核心内容。
从链接暴露端控制组合增长
蜘蛛发现 URL 的主要途径仍然是链接。站内筛选如果全部以可抓取的 a 标签输出,组合数会迅速膨胀。可以考虑:
- 让筛选结果通过表单提交或 JavaScript 交互触发,不生成大量静态可抓链接。
- 保留少量有价值的筛选入口,其余组合不主动暴露。
- 排序切换默认使用同一 URL,或通过前端参数控制,不写入服务端链接。
- 分页与筛选不要互相叠加成无限路径,必要时限制可抓取的组合范围。
canonical、robots 与 noindex 的边界
canonical 可以告诉搜索引擎哪个 URL 是主要版本,但它不阻止蜘蛛抓取参数页。robots.txt 的 Disallow 能减少抓取,但被屏蔽的 URL 仍可能因外链或历史记录被发现;如果页面本身需要参与索引,屏蔽后也无法传递信号。noindex 适合不希望出现在结果中的页面,但蜘蛛仍需抓取才能看到该标签。
这三种手段解决的是不同问题:canonical 处理重复信号,robots 处理抓取访问,noindex 处理索引收录。把它们混用,容易得到“抓取没减少、索引也没收敛”的结果。
日志中的核对清单
用服务器日志按路径前缀、参数数量、响应状态分组,观察一段时间内的抓取分布:
- 同一路径下带参数的 URL 请求量是否远高于不带参数的版本。
- 参数组合是否在持续新增,且没有对应的内容更新。
- 参数页返回的状态码是否正常,内容是否与主版本高度相似。
- 被大量抓取的参数页是否反过来挤占了栏目页、详情页的回访。
- 站内链接、站点地图、外部入口中是否仍在输出这些参数组合。
把抓取机会留给内容更新
参数去重不是一次性的清理,而是链接生成规则的长期约束。每次新增筛选、排序或追踪逻辑时,先回答两个问题:这个组合有没有独立内容价值;它会不会以可抓取链接的形式暴露给蜘蛛。如果答案是否定的,就在前端和链接输出层收敛,而不是等到日志里出现大量重复抓取后再补救。
最后需要提醒的是,不同站点的参数结构和抓取表现差异很大。以上清单适合作为排查起点,具体取舍仍要结合自身日志、内容更新频率和抓取预算来判断,不必追求一次性覆盖所有组合。