站内搜索框、筛选器和排序按钮是用户找内容最顺手的工具,也是 URL 数量最容易失控的地方。一个列表页叠加颜色、尺寸、价格区间、排序方式和页码,参数组合能轻松堆到几千上万条地址。对蜘蛛来说,这些地址里大部分是重复内容或低价值页面,却会占掉本可以用在正文页上的抓取时间。
参数地址为什么会膨胀
先弄清楚失控的来源,后面的处理才有方向。常见的几种情况:
- 组合爆炸:三个筛选维度各十个选项,理论组合就是上千条,而其中很多组合并没有实际内容。
- 顺序不固定:color=red&size=m 和 size=m&color=red 指向同一批商品,却被当成两个地址。
- 空值与默认值:点了筛选又取消,地址栏留下一串空参数,同样生成一个新 URL。
- 跟踪参数:utm_source、gclid、fbclid 这类参数跟随分享链接扩散,同一页面出现多个版本。
- 站内搜索结果页:每个关键词对应一个地址,用户输入的长尾词、拼写错误也会被记录成可访问页面。
自查清单
1. 先看数据,别凭感觉
打开服务器访问日志或站长平台的抓取统计,按地址分类统计带问号的 URL 占比。如果参数页占了抓取量的大头,说明需要处理。同时看这些参数页有没有真实的外部链接和用户访问,没有的话优先级更高。
2. 站内搜索结果页怎么处理
搜索结果页通常不值得被收录,但处理方式要选清楚:
- 如果整个搜索功能都不需要被抓,用 robots.txt 屏蔽搜索目录或 /search 路径。
- 如果希望蜘蛛还能顺着结果页发现正文链接,可以在页面上加 noindex, follow,让页面不被收录但链接仍可传递。
提醒:robots.txt 屏蔽之后,搜索引擎不会再抓取该页面,也就看不到页面里的 noindex。两种手段选一种,不要同时指望它们叠加生效。
3. 筛选与排序页分两类看待
不是所有参数页都该屏蔽。有搜索量、有用户主动访问的筛选组合(比如某个品类的价格区间)可能值得保留;纯机器生成的组合则没有价值。可以按下面的方式区分:
- 保留:有独立内容、有用户需求、能被正常导航到达的筛选页,给一个简洁的规范地址,并让列表页只输出必要参数。
- 收敛:内容基本重复的组合页,用 canonical 指回主列表页,或者加 noindex。
- 屏蔽:排序方式、每页显示数量、无意义的默认值,这类参数不值得被抓,直接屏蔽更省事。
4. 统一参数形式
同一批内容只应有一个地址。可以在服务端做归一化:把参数按固定顺序排列,去掉空值和默认值,然后对旧地址做 301 跳转到规范形式。这一步做好之后,重复地址会明显减少。
5. 清理跟踪参数
统计和推广用的参数不影响页面内容,可以让页面上的 canonical 指向不带参数的版本;如果参数种类繁多且不可控,在 robots.txt 里用通配规则屏蔽常见前缀也是可行做法。
整理的先后顺序
- 导出近一个月的抓取记录,筛出带参数的地址,按路径归类。
- 分清哪些参数页有用户访问和外部链接,哪些纯粹是系统生成。
- 对每一类决定处理方式:屏蔽、noindex 还是 canonical,并记录下来。
- 调整站内链接,列表页和导航只输出必要的参数,避免主动制造组合地址。
- 改完观察两到四周的抓取分布,看参数页占比是否下降,正文页抓取是否变多。
检查节奏
参数治理不是一次性的活。新上线的筛选维度、新接入的推广渠道都可能重新引入大量地址,所以把这项检查放进季度例行工作里比较合适:每季度翻一次抓取日志,看看有没有新的参数模式冒出来。记录下每次调整的内容和规则,下次有人问起为什么屏蔽某个路径时,能直接查到原因。
处理参数的思路其实很简单:让每一个有价值的页面只有一个地址,让没有价值的组合地址尽早被排除在抓取范围之外。做到这两点,蜘蛛的时间才会更多落在真正需要被发现的内容上。