网站收录

站内搜索与筛选页被大量收录:无限 URL 的治理顺序

站内搜索、筛选、排序和分页会生成大量参数 URL,其中大部分没有收录价值。本文按“先分类、再动手”的顺序,讲清 noindex 与 robots.txt 的先后关系、canonical 的适用场景,以及从链接和 sitemap 源头减少 URL 的具体做法。

网站收录

站内搜索与筛选页被大量收录:无限 URL 的治理顺序

为什么站内搜索和筛选会产出海量 URL

站内搜索、筛选、排序、分页这几种功能,本质上都是“在同一批数据上做不同切片”。每个切片对应一个可访问的 URL,参数一旦组合起来,数量会迅速超出预期。

常见的参数形态包括:搜索词(?q=)、筛选属性(?color=&size=)、价格区间、排序方式(?sort=price_asc)、分页(?page=),以及筛选与排序叠加的复合参数。爬虫在页面上发现这些链接后,会顺着组合继续往下爬,很快就能生成成千上万个 URL。

这些 URL 里,真正有价值的通常是少数——比如某个稳定搜索量较大的属性组合;大量的空结果页、单结果页、只改变排序的页面,价值很低。

先分类,再决定拦不拦

治理之前先分三类,处理方式完全不同:

  • 有稳定需求的组合:例如“红色连衣裙”“500 元以下耳机”这类确实存在搜索行为的属性组合,可以保留在索引里,甚至单独优化标题与内容。
  • 用户自定义组合:任意关键词、任意参数叠加产生的结果,通常没有稳定需求,不值得长期占用索引。
  • 空结果与无意义参数:搜索无结果页、只改变排序方式的页面,基本没有收录价值。

分类依据不是“技术上好不好处理”,而是“这个 URL 对应的页面,有没有人会真的去找,找到了有没有用”。

抓取和收录要分开处理

这是最容易被忽略的一点:robots.txt 只是拦抓取,不是删索引。搜索引擎被拦住之后,读不到页面上的 noindex,已经进入索引的 URL 可能长时间留在那里,只显示一句“因 robots.txt 无法提供描述”。

所以顺序通常是:

  1. 如果目标是不收录,先允许抓取,用 noindex 让搜索引擎读到并移除。
  2. 确认页面从索引消失后,再考虑是否用 robots.txt 拦截抓取,节省抓取预算。
  3. 如果这个 URL 从一开始就没被收录、也不希望被抓,直接 robots.txt 拦截即可。
顺序反了,容易出现“拦了大半年,索引里还挂着”的情况,而且这时你没法用 noindex 解决,因为页面根本读不到。

筛选页还可以用 canonical 收敛

如果筛选结果页和主分类页内容高度相似(比如只是把同一批商品换了顺序),可以用 canonical 指向主版本,让权重集中过去。但如果筛选页有独立内容、有搜索量,canonical 指向主分类页反而浪费机会,要按页面实际情况判断。

另外要注意,Google 的 URL 参数工具早已下线,现在没有“一键忽略某类参数”的设置,主要靠链接控制、robots、noindex 和 canonical 组合使用。

从源头减少 URL 的产生

  • 站点搜索页:默认加 noindex,并且不要让搜索结果页出现在 sitemap 和内链里。
  • 筛选维度:只开放少数几个有搜索量的维度,其余维度可以改为前端筛选(不改变 URL)或表单提交。
  • 排序参数:排序不产生新内容,可以统一 canonical 到默认排序,或干脆不输出可抓取链接。
  • 分页:只保留前几页的可抓取链接,更深的页码通过“加载更多”或直接不输出链接。
  • sitemap:只放你希望被收录的 URL,不要把全站参数组合塞进去。

推进时的几个提醒

  • 先看数据再动手:搜索控制台的抓取统计和“网页”报告能告诉你哪些参数 URL 真的被抓了、被收录了。
  • 别一次全堵:有流量的参数页先保留,只处理明显无价值的组合。
  • 收敛是渐进的:改完之后抓取频次和索引状态都需要时间变化,通常要观察几周。
  • 没有“一定收录”或“一定移除”的保证:以上操作只是减少无价值 URL 的抓取与收录机会,最终由搜索引擎判断。