搜索抓取

Disallow 与 noindex 别混着用:抓取和收录是两条线

抓取和收录常被当成一回事,于是 robots.txt 与 noindex 混用,抓取量没省下来,页面状态反而更乱。本文梳理 Disallow、noindex、X-Robots-Tag 各自管理什么,几种常见误用组合,以及怎样判断哪些 URL 值得继续抓取、哪些该在入口处收敛。

搜索抓取

Disallow 与 noindex 别混着用:抓取和收录是两条线

在搜索抓取相关的讨论里,有一类问题出现频率很高:某些页面明明不希望被收录,也加了 noindex,过一阵子看日志,蜘蛛还是天天来;反过来,有些路径写进了 robots.txt 的 Disallow,结果页面状态比预期复杂得多。这两种情况其实指向同一个前提——抓取和收录是两条独立的线,把它们当成一件事,策略就很容易写拧。

一、蜘蛛先抓取,再决定要不要收录

搜索引擎处理一个 URL 通常分两步:先抓取,拿到内容;再根据内容本身、meta robots、响应头里的 X-Robots-Tag 等信号,判断是否进入索引、是否参与展示。抓取在前面,收录在后面。理解这个顺序,很多看似矛盾的现象就说得通了。

这也解释了 noindex 页面为什么会持续产生抓取量:只要这个 URL 还能被蜘蛛发现(内链、外链、Sitemap、历史记录都算),又没有在抓取层被挡住,它就会进入抓取队列。noindex 表达的是“别收录”,不是“别来”。

二、Disallow 与 noindex 各自管什么

  • robots.txt 的 Disallow:管抓取。被禁止的路径,蜘蛛通常不会发起请求,也就拿不到页面内容。
  • meta robots 的 noindex:管收录。页面必须能被抓到,这个信号才有机会被读到。
  • 响应头 X-Robots-Tag:同样管收录,优势是不用改页面模板,适合 PDF、图片或由后端统一输出头部的场景。

三者是分工关系,不是可以互相替代的关系。关键看你想达成什么结果,而不是哪个“更狠”。

三、容易出问题的几种组合

  • 用 Disallow 挡住一个目录,同时指望目录内页面的 noindex 生效。蜘蛛抓不到页面,就读不到 noindex;如果这些 URL 之前已经进过索引,反而可能缺少更新信号。
  • 给聚合页、标签页加 noindex,却仍让它们铺满导航和分页。抓取会被节省吗?不一定,蜘蛛依旧会反复访问这些 URL,只是不收录,抓取资源照样消耗。
  • 整站或大目录 Disallow,同时又用 Sitemap 提交同一批 URL。Sitemap 是“建议来看看”,robots 是“别来”,两个信号互相打架。
  • 改版时旧目录 301 到新目录,但 robots.txt 里还留着旧目录的 Disallow。重定向写得再规范,蜘蛛也走不到那一步。
  • 把 noindex 当成临时下线手段,先加 noindex 又保留 200 状态和正常内链。页面对蜘蛛仍然是“活着”的,抓取不会停。

四、让抓取量花在有用的 URL 上

如果目标只是减少无意义页面的抓取消耗,比“用 Disallow 还是 noindex”更值得先做的是:判断这个 URL 到底有没有必要存在。顺序大致是这样:

  1. 站内搜索结果页、带会话 ID 的地址、排序与筛选参数页,优先做 URL 归一化、收敛入口或限制可选参数,而不是整批丢给 noindex 了事。
  2. 确实要保留、但不希望收录的页面(历史归档、状态页、活动页存根),保留抓取并加 noindex,同时减少它在内链中被重复暴露的次数。
  3. 既不希望抓取、也不希望引用的路径(后台、测试目录、内部接口),用 Disallow 隔开,并确认没有外链指向它们。
  4. 已经确定下线的页面,按情况用 301 或 410 处理,而不是留一个内容为空的 200 页面继续参与抓取。

还有一个容易被忽略的点:URL 发现和抓取执行不是同一件事。一个 URL 被发现了,未必马上被抓;抓了,也未必收录。所以判断效果时,要把“是否被抓”“是否被收录”“是否带来访问”三个问题分开看,混在一起只会得出模糊结论。

五、上线前后的检查顺序

上线前,把 robots.txt、页面 meta、响应头、Sitemap 这四份信号放在一起对一遍,确认没有互相冲突的地方,尤其是目录级别的规则要覆盖到具体路径。上线后,用服务器日志和抓取统计核对实际行为:哪些路径在被反复请求、哪些一直没动静、noindex 页面是不是仍在高频出现。

不要只盯着抓取量下降。真正要控制的是浪费——那些既不会收录、也不带来访问、却持续占用抓取资源的 URL。

最后提醒一句:robots.txt 是公开文件,写在里面的路径相当于对外说明。真要隔离的目录,除了 Disallow,更该做的是访问控制。抓取策略解决的是搜索引擎怎么走,访问控制解决的是谁能进,两者不能互相替代。