URL 查询参数在站内很常见:排序、筛选、分页、追踪、会话标识都会挂在问号后面。对用户来说这些参数让页面更灵活,但对搜索蜘蛛来说,每个参数组合都可能被当成一个新地址。参数一旦可以自由组合,同一条内容会分裂出大量入口,抓取预算被摊薄,真正需要更新的页面反而被排在后面。
为什么参数组合会被当成新 URL
蜘蛛判断地址是否访问过,主要依据完整 URL 字串,而不是页面内容。只要参数顺序、数量、取值不同,就会被记录成一条新的待抓取链接。如果站点没有给出明确的规范信号,蜘蛛只能按自己的规则去猜,通常结果是保留一部分、丢弃一部分,于是日志里出现大量抓了但没带来价值的请求。
先分清参数的类型
- 内容型参数:参数不同,页面主体内容确实不同,例如商品详情的关键规格。
- 排序与视图型:仅改变排列顺序或展示方式,主体内容基本一致。
- 筛选型:多条件组合,可能产生成百上千种组合。
- 追踪与会话型:utm、sessionid、from 等,与内容无关。
- 分页型:页码参数属于正常的抓取路径,需要保留。
分类的目的不是一刀切地屏蔽,而是决定哪些需要被蜘蛛发现,哪些应该收敛到规范地址。
排查顺序
第一步:从日志看参数形态分布
抽取一段时间的抓取日志,按路径分组统计带参数的请求占比,再统计参数键名的分布。重点看三类信号:同一路径的参数键超过几十种;参数请求返回 200 但内容高度相似;参数请求占比远高于无参数请求。这三点同时出现,基本可以确定存在膨胀。
第二步:核对这些参数是否真的被内链暴露
日志里参数 URL 很多,未必是站内链接带来的,也可能是外部引用或历史遗留。检查页面源代码中的链接、Sitemap 中的地址,以及前端脚本动态拼接的地址,确认哪些是主动暴露的入口。只有主动暴露的入口才是可控的。
第三步:检查规范信号是否一致
canonical 标签、内链指向、Sitemap 地址三者应当指向同一个规范 URL。常见问题是指向不一致:canonical 写的是无参数版本,内链却大量带参数,Sitemap 又混入了排序参数。信号互相矛盾时,蜘蛛只能自行取舍,结果往往不可预期。
收敛手段
- 内链统一指向规范地址:列表页翻页、排序入口尽量使用固定且简洁的参数形态,避免层层叠加。
- canonical 覆盖参数页面:排序、视图类页面统一声明规范地址,避免各自为政。
- Sitemap 只放规范 URL:不要把筛选组合写进 Sitemap,否则等于主动扩大入口。
- 谨慎使用 robots 屏蔽:被屏蔽的地址如果仍被内链引用,蜘蛛可能记录但不再抓取,规范信号也无法读取,判断反而更模糊。优先用 canonical 收敛。
- 限制组合数量:筛选页对无结果组合返回合适响应,避免生成大量空壳地址。
参数处理的判断标准是:这条地址是否承载独立内容。有独立内容就保留并规范,没有独立内容就收敛到主地址。
验证与持续观察
调整后不要只看一天的数据。以周为单位对比参数请求占比、规范地址的抓取频次,以及新内容的发现速度。如果参数请求下降、规范地址抓取稳定,说明收敛在起作用。若参数请求不降反升,需要回头检查是否有新的入口被放开,例如活动页批量生成带追踪参数的链接。
参数治理本质上是把被发现的机会集中到少数有价值的地址上,而不是追求抓取总量。抓取预算有限,入口越清晰,重要页面被及时访问的概率越高。