站内搜索和筛选是常见功能:访客输入关键词、勾选颜色、价格区间、排序方式,页面立刻给出结果。对用户来说很方便,对搜索引擎爬虫来说却可能是一场灾难。因为每一次参数组合都可能对应一个可访问的 URL,而这些 URL 大多内容稀薄、彼此高度相似。
如果不加控制,站点会在短时间内多出成千上万个低质入口。它们未必会被收录,但会占用抓取预算,也会让站点地图和日志分析变得混乱。这篇自查清单,帮你把这类页面管起来。
先确认问题是否存在
不要凭感觉判断。花半小时看几项数据,比争论要不要屏蔽更有用。
- 服务器日志:统计爬虫请求中带查询参数的 URL 占比,看看是否超过总抓取量的三成。
- 索引覆盖报告:观察“已发现未编入索引”“已抓取未编入索引”里,有多少来自搜索或筛选结果页。
- 站点地图:检查是否无意中把参数 URL 提交进了 sitemap。
- 站内链接:看看筛选结果页之间是否互相链接,形成了一条没有尽头的路径。
如果日志里大量请求集中在排序参数、会话参数、空结果页上,基本可以确定需要处理。
处理这类页面的几个原则
目标不是把所有参数页一刀切,而是区分“有稳定搜索需求”和“只是组合出来的临时页面”。
1. robots.txt 与 noindex 各管一段
对于纯排序、会话跟踪、价格区间等无独立价值的参数,可以用 robots.txt 禁止抓取,避免爬虫反复请求。但要注意:被 robots.txt 屏蔽的页面,搜索引擎无法读取页面上的 noindex。所以更稳妥的做法是,对需要保留链接但不想收录的页面,放开抓取并使用 noindex。
2. 搜索页尽量不要生成静态入口
站内搜索结果页通常没有独立价值,也不适合作为落地页。建议在模板层面对搜索结果页统一加 noindex,并且不要把这些结果页放进站点地图或导航。如果站内搜索必须能被站外访问,至少不要让不同关键词的结果页互相链接。
3. 筛选参数做规范化
多选参数最麻烦的是顺序和组合。比如 ?color=red&size=m 与 ?size=m&color=red 是两个 URL,内容却一样。可以在服务端对参数排序,或者用 canonical 指向一个主版本。排序参数、每页条数参数,一般不需要单独成页。
4. 站点地图与内链要克制
站点地图只放你希望被发现的页面。筛选结果页、排序页、空结果页不建议进入 sitemap。内链方面,筛选功能可以放在页面上,但不要让它成为爬虫深入站点的唯一路径。重要栏目仍然要有清晰的导航和面包屑。
5. 空结果页给一个明确状态
当筛选条件没有匹配内容时,不要返回一个模板完整的空列表页,更不要让它保持 200 状态。可以考虑返回 404 或 410,或者至少在页面上给出明确提示并设置 noindex。空结果页被大量抓取,是抓取预算浪费的常见来源。
一份可执行的自查流程
- 导出最近一周的爬虫日志,按 URL 参数分组,找出访问量最高的参数类型。
- 确认哪些参数页有真实搜索需求,哪些只是排序、会话或空结果。
- 对无价值参数页设置 noindex 或 robots.txt 屏蔽,并确保两者不冲突。
- 检查 canonical 是否正确指向主版本,避免参数页互相声明。
- 清理站点地图中的参数 URL,同时确认导航和内链不会大量指向筛选结果。
- 修改后持续观察日志,确认抓取请求向有效页面集中。
站内搜索和筛选本身不是问题,问题在于让它们成为 URL 发现的主要来源。把发现入口留给栏目页、详情页和真正有搜索价值的聚合页,抓取效率才不会被参数组合稀释。
这类调整通常不会立刻带来排名变化,但能减少无效抓取、让日志更干净。对长期运营的站点来说,这些基础工作是值得定期复查的。