站点运营

站点运营:站内搜索与筛选参数自查,别让参数组合造出无穷 URL

站内搜索、筛选和排序参数能给访客带来便利,却也可能让同一个页面衍生出成百上千个地址,把抓取预算耗在相似内容上。本文按参数类型梳理自查思路:搜索结果页、分面导航、追踪参数分别怎么处理,robots.txt 与 canonical 如何配合,以及一份可以定期执行的检查清单。

站点运营

站点运营:站内搜索与筛选参数自查,别让参数组合造出无穷 URL

站内搜索、筛选和排序功能对访客很友好,几秒钟就能从大量内容里挑出想要的那几条。但对爬虫来说,每一次参数组合都可能被当成一个新地址。如果没有任何约束,一个内容量并不大的站点,也能在很短时间里被「生成」出成千上万个 URL。

参数为什么会把 URL 空间撑开

排序(?sort=price)、筛选(?color=red&size=m)、站内搜索(?q=关键词)、会话与追踪参数(?utm_source=...&sid=...),这些地址返回的页面主体往往大同小异,却各自拥有一个独立 URL。蜘蛛顺着站内链接一路爬下去,抓取预算被大量高度相似的页面吃掉,真正需要及时更新的内容反而排在后面。更麻烦的是,当多个参数可以自由组合时,URL 的数量会呈乘法增长,靠人工列举很难穷尽。

参数本身不是错的。需要自查的不是「有没有参数」,而是「哪些参数组合允许被抓取、被索引」。

第一类:站内搜索结果页

搜索结果页通常是动态生成的,并且可以被任意关键词触发。只要有人构造一个关键词,就能得到一个此前不存在的地址。常见的情况包括:

  • 搜索框提交后直接跳到一个带查询字符串的页面,标题里还带着用户输入的关键词;
  • 搜索结果页里又列出大量内容链接,蜘蛛顺着这些链接继续深入;
  • 空结果页也返回 200 状态码,形成一堆内容为空的地址。

比较稳妥的做法是让结果页保持可访问,但不进入索引:给这类页面加上 noindex,同时在 robots.txt 中屏蔽带搜索参数的路径。注意这两者不要简单叠加——如果路径已经被 robots.txt 完全屏蔽,蜘蛛就看不到页面上的 noindex 了,需要根据实际情况选一种作为主要手段。

第二类:筛选、排序与分面导航

电商、房产、招聘类站点常见多个筛选维度。三个维度各四个选项,组合出来的地址数量就相当可观。可以按下面的顺序判断:

  • 核心筛选:确实对应不同内容集合、且有搜索需求的,保留并让它们可被抓取;
  • 次要筛选:内容重合度高、搜索需求低的,指向一个代表性地址作为规范版本;
  • 排序与视图参数:一般没有独立检索价值,统一规范到默认排序的地址。

具体到实现上,canonical 是常用的收敛工具,但要保证指向的地址真实存在且返回正常,不要指到一个 404 或需要登录的页面。

第三类:追踪、分享与临时参数

utm 参数、会话 ID、打印版本、来源标记,这些参数对访客体验和站内结构没有贡献,却会在链接被转发时不断扩散。建议的做法是:

  1. 在服务器或应用层做参数白名单,只保留业务真正需要的参数;
  2. 其余参数可以让页面正常打开,但 canonical 一律指向无参数的干净地址;
  3. 对明显冗余的地址,考虑用 301 收敛到干净版本,同时确认不会连锁跳转。

一份可以定期执行的检查清单

  • 随手在站内点几组筛选和排序组合,对照地址栏与页面 canonical 是否一致;
  • 抽查索引情况,看是否存在大量带参数的地址;
  • 确认筛选、分页的入口是普通可点击链接,而不是只能靠脚本触发;
  • 检查 robots.txt 的规则有没有误伤干净 URL,尤其是路径前缀写得太宽的情况;
  • 核对 sitemap 中是否混入了带参数的地址,只提交干净且有代表性的 URL;
  • 在服务器访问日志里统计带参数 URL 的抓取频次和返回状态码,看有没有异常增长。

参数治理不是一次配置就能一劳永逸的事。栏目调整、筛选维度增加、营销活动上线,都会带来新的参数。把上面这份清单放进例行的运营节奏里,隔一段时间回看一次日志,比在某次集中整改中改一大堆规则更有效。