做站时间长了,回头看抓取日志会发现一个现象:出现次数最多的 URL 往往不是内容页,而是筛选、排序、日历、视图切换这些参数拼出来的地址。它们本身不算错误,但数量会成倍甚至指数级膨胀,把抓取能力摊薄到大量重复页面上。
组合 URL 是怎么膨胀起来的
一个列表页如果有 5 个筛选维度、每个维度 10 个可选值,理论上就能拼出十万级的地址。哪怕只有一部分被链接暴露出来,也足以让蜘蛛花上很久才能走完一轮,而真正更新的内容页反而排到了后面。
- 筛选条件叠加:品牌 + 价格区间 + 颜色 + 尺码
- 排序与视图:按价格、按销量、按上新,列表 / 网格切换
- 分页与参数混用:同一个列表页出现多套分页写法
- 跟踪参数被站内链接带进站内,如 utm、ref、from
先把参数按作用分个类
分类是后面所有处理的前提,分错了容易出现该放行的被挡住、该收敛的被保留。
- 内容参数:真正改变页面主体内容,例如分类 ID、标签 slug、文章 ID。
- 排序与视图参数:只改变呈现顺序或版式,主体内容基本一致。
- 跟踪参数:用于统计来源,对页面内容没有影响。
- 会话与临时参数:sessionid、随机数、时间戳之类。
控制手段要配合使用
robots.txt 与 noindex 的分工
Disallow 能减少抓取,但被屏蔽的 URL 仍可能作为无内容的地址留在索引里;noindex 需要页面被抓到之后才生效。两者不是替代关系。常见做法是:纯排序、纯跟踪类参数用规则挡住抓取;有独立价值但不想收录的页面,允许抓取、返回 noindex。
canonical 与内链收敛
canonical 只作为合并信号,不能代替内链管理。如果站内到处链向各种参数版本,蜘蛛仍会优先去爬它们。内链层面尽量只指向规范版本:筛选后的链接用按钮或交互组件承载,或至少不放在主导航、面包屑、页脚这类高频位置。
Sitemap 只放规范 URL
Sitemap 是主动提交入口,往里塞参数地址等于主动邀请抓取。分页、筛选、排序页不要进 Sitemap,规范内容页保持单一地址,lastmod 与真实更新时间对应。
用抓取日志核对效果
- 按参数名统计抓取次数占比,看看哪些参数最耗资源。
- 抽查被频繁抓取的组合地址,确认返回状态码与页面主体内容。
- 核对实际被抓取的 URL 与页面声明的 canonical 是否一致。
- 调整后隔一段时间再看趋势,确认参数类 URL 的抓取量是否下降、内容页抓取是否上升。
几个容易踩的坑
- 用一条规则把带问号的地址全部挡掉,会连带误伤真正的内容参数。
- 分页地址一律 noindex,会切断蜘蛛沿列表向深层页面前进的路径。
- 只改 robots 不清理内链,蜘蛛仍会不断发现并尝试这些地址。
- 站内跳转链接里带跟踪参数,等于自己给自己制造重复 URL。
收紧参数 URL 的目标是让抓取更集中,而不是削减站点规模。调整前后都要用日志验证,避免把有用的入口一起挡在门外。
落到执行上,可以先把参数列一张清单,标记每个参数的性质,再决定是挡抓取、只 noindex,还是允许抓取并做规范化。之后每隔一段时间回看日志,按实际抓取分布微调规则,比一次性大改更容易控制风险。