很多站点的 URL 数量增长并不是因为内容变多,而是因为同一批内容被参数拆成了多个版本。列表页加上筛选、排序、分页、视图切换,再叠加会话 ID 或渠道追踪参数,一个分类可能派生几百个地址。蜘蛛沿内链爬行时无法判断这些地址是否代表不同内容,只能逐个访问,抓取额度就这样被相似页面摊薄。
参数扩散通常从哪几个口子进来
- 筛选与排序:颜色、尺码、价格升序这类条件组合,条件越多组合越多。
- 分页与视图:分页参数与列表视图参数同时出现,形成二维矩阵。
- 会话与追踪:会话 ID、渠道来源、外部跳转标记等,同一个页面被反复生成新地址。
- 站内搜索结果页:关键词被外部链接或爬虫试探地址带入。
- 内链本身:模板里的按价格排序、查看全部等链接直接输出带参地址,等于主动把参数地址递给蜘蛛。
先做分类,再决定收敛方式
不是所有参数页都要清理。判断标准可以看两点:这个地址是否有稳定的检索需求,以及它是否提供了不重复的内容。
建议保留发现入口的参数页
- 有明确检索意图、且页面正文确实随参数变化,例如品牌筛选后展示不同的商品集合。
- 分页序列,它承担着把深层内容暴露给蜘蛛的作用。
建议收敛的参数页
- 纯排序、纯视图切换,输出内容与默认顺序基本一致。
- 会话 ID、追踪参数、站内搜索关键词。
- 多条件筛选的自由组合,尤其是条件数量超过两三个的。
核对顺序:从日志到内链
- 在访问日志里按路径统计,筛出带问号的请求,按参数名分组,看每个参数名对应的 URL 数量级。
- 对比被访问的参数地址数量与实际产生点击的地址数量,差距大的参数优先处理。
- 检查模板输出,确认列表页、面包屑、相关推荐等位置是否生成了带参链接。
- 检查 Sitemap 是否把参数地址也提交进去,提交了就要同步调整。
- 确认站内跳转与分页链接在首屏 HTML 中可被直接读到,不依赖前端渲染后追加。
收敛手段与各自的副作用
canonical 指向规范地址
适合同一内容多参数的情况。注意 canonical 只在页面被访问后才生效,蜘蛛已经访问过的参数地址仍会消耗一次抓取;如果参数地址数量极大,单靠 canonical 收敛偏慢。
robots.txt 屏蔽特定参数
对组合爆炸的参数比较有效,但要清楚被屏蔽的地址不会被抓取,页面上的链接也不会被继续跟踪。如果某个参数页既被屏蔽又是唯一入口,深一层内容可能失去发现路径。建议只屏蔽明确的会话、追踪与排序类参数,并避免屏蔽分页。
内链统一指向无参地址
这是最省事的一步。默认排序、默认视图、默认筛选状态的链接都输出无参形式,把带参地址留给用户点击后由前端生成。这样蜘蛛看到的链接集合会明显收窄。
把筛选结果放到交互层
如果筛选结果依赖前端渲染,要确认首屏 HTML 里仍有可抓取的分页或分类入口,否则会变成入口缺失的另一类问题。
参数收敛的目标不是让蜘蛛一个参数页都不访问,而是让它把时间花在真正有差异的地址上。收敛前后都可以用日志里的参数请求占比做对比,看变化是否符合预期。
复查时看什么
- 参数请求在总抓取中的占比是否下降,下降的是不是目标参数。
- 分页与分类入口的抓取是否保持稳定,没有因屏蔽规则被误伤。
- Sitemap 中是否还残留参数地址。
- 被保留的参数页是否仍能正常返回内容,没有因为规则调整返回 403 或空壳页。
参数治理没有一次到位的做法,站点结构、筛选组件和运营活动都会不断产生新参数。把参数名登记成清单,新增功能上线前先确认它会不会生成新的 URL 维度,比事后清理更省力。