很多站点的正文页面数量并不夸张,但站内搜索页、筛选页、排序页却能把 URL 总量放大好几倍。这些页面由参数自动生成,没有人工审核,也缺少固定的内链入口,蜘蛛一旦走进去,很容易在排列组合里反复绕圈,既浪费抓取资源,也让真正需要被发现的正文页排在后面。
一、先摸清哪些参数会生成新 URL
动手处理之前,先把参数来源列清楚。常见的几类:
- 站内搜索:?q=、?s=、?keyword= 这类由访客输入决定的页面,内容组合几乎是无穷的。
- 筛选与排序:?color=、?brand=、?price=、?sort=、?order= 等,单一维度还好,多维度叠加就会迅速膨胀。
- 追踪参数:utm_source、utm_medium、gclid 等投放参数,同一篇内容会派生出若干版本。
- 分页:?page= 与筛选条件组合后,数量往往再翻一倍。
把最近一周的访问日志拉出来,按参数名做一次分组统计,就能看出哪些参数被蜘蛛高频访问,哪些只是偶尔出现。这一步不需要复杂工具,用脚本或表格分组即可完成。
二、按页面类型选择处理方式
1. 站内搜索结果页
这类页面通常不值得被索引,建议在页面头部加 noindex, follow,让它仍然能传递链接价值。如果直接写进 robots.txt 屏蔽,蜘蛛就看不到 noindex 标签,对应 URL 仍可能出现,只是没有摘要,展示效果反而更差。
2. 筛选与排序参数
不要一刀切。可以按「是否有真实搜索需求」做白名单:例如「品牌 + 分类」这种组合有用户主动搜索,可以保留并写好标题与描述;其余没有搜索量的组合统一 noindex,或者用 canonical 指向不带参数的列表主页。排序参数一般直接 canonical 到默认排序即可。
3. 追踪参数
最干净的做法是在服务端或 CDN 层把 utm 类参数剥离并 301 到不含参数的 URL;退一步,也可以在页面上把 canonical 固定写成干净地址。
另外要注意参数顺序:?a=1&b=2 与 ?b=2&a=1 在很多系统里会被当成两个不同 URL,最好在服务器层做一次统一归一化。
三、上线前的自查清单
- 列出站点所有会产生新 URL 的参数名,并标注各自用途。
- 站内搜索页是否已设置 noindex,是否与 robots.txt 规则冲突。
- 筛选页是否有白名单策略,还是全部放行。
- canonical 指向的目标页面本身是否可索引,避免指向一个 noindex 页面。
- 同一组参数不同顺序,是否会被归一化到同一个地址。
- 站内搜索页的 follow 是否会让蜘蛛顺着结果爬到大量随机内容,必要时改为 nofollow。
- sitemap 中是否混入了参数 URL,需要清理。
四、几个容易踩的坑
- robots.txt 屏蔽与 noindex 同时使用,导致 noindex 永远不生效。
- 列表页 canonical 一律指向首页,把分类主题也一起合并掉。
- 筛选页上其实放了优质正文,却因为整站规则被一起屏蔽。
- 只在模板里改了规则,忘了历史生成的参数 URL 仍在被抓取。
参数治理的目标不是把所有带参数的 URL 都杀掉,而是让值得被发现的页面留下明确入口,让无意义的排列组合失去被反复抓取的机会。
这项工作不需要一次做完。可以先从流量最大、参数最杂的栏目开始,处理完一个再观察日志变化,逐步把规则补齐。规则确定之后,最好记录在站点运维文档里,避免下次改模板时又被无意覆盖。