网站收录

robots.txt 禁抓与 noindex 禁收录:两个开关别按反了

robots.txt 的 Disallow 和页面里的 noindex 经常被当成同一件事来用,结果是想屏蔽的页面还在索引里,想收录的页面反而抓不到。这篇文章把「禁止抓取」和「禁止收录」拆开讲,说清两者各作用在哪一环、正确的操作顺序,以及几个容易踩的坑。

网站收录

robots.txt 禁抓与 noindex 禁收录:两个开关别按反了

在日常处理站点时,有一类问题反复出现:页面明明在 robots.txt 里被 Disallow 了,搜索里却还能搜到它;或者反过来,页面加了 noindex,蜘蛛却依旧天天来抓,服务器日志里一片热闹。这两种情况看起来矛盾,其实都源于把「禁止抓取」和「禁止收录」当成了同一件事。

两个开关各管一段路

要理清这件事,先把页面进索引的过程拆开看:蜘蛛先发现 URL,然后去抓取页面内容,读到内容里的指令,最后决定要不要放进索引。整个过程是顺序的。

  • robots.txt 的 Disallow:作用在「抓取」这一步。它告诉蜘蛛不要来取这个 URL 的内容。但蜘蛛并没有因此把这个地址忘掉——它仍然知道这个 URL 存在。
  • noindex:作用在「收录」这一步。它写在页面里(meta 标签)或响应头里(X-Robots-Tag),蜘蛛必须先抓到页面才能读到它。

顺序决定了一个很关键的结论:如果 robots.txt 把页面挡住了,蜘蛛就抓不到页面,自然也就读不到页面里的 noindex。于是这个页面既没被抓,也没被标记 noindex,只是被挡在门外。搜索引擎手里只剩一个光秃秃的 URL 和一堆指向它的链接,索引里那条记录就很可能继续留着。

想让它彻底消失,顺序要对

如果目标是不让某个页面出现在搜索结果里,比较稳的做法是:

  1. 先确认页面可以被抓取,robots.txt 里没有拦它;
  2. 在页面上加 noindex(或用 X-Robots-Tag);
  3. 等蜘蛛重新抓取,确认索引里的记录消失;
  4. 记录确实没了之后,再考虑要不要用 robots.txt 屏蔽抓取,减少无意义的访问。

第 4 步是可选的。如果页面本来就不打算再维护,直接返回 404 或 410 通常更省事,信号也更明确。

几种常见搭配,对号入座

  • 想收录,却用 Disallow 挡着:这是最容易出错的一种。收录的前提就是抓取,把想让收录的页面挡在门外,只会让它更难被发现。
  • 不想收录,但希望链接权重继续流通:用 noindex,follow,别用 Disallow。
  • 临时不想被访问:比如测试环境,Disallow 可以用,但要清楚代价是这些 URL 可能仍留在索引里。
  • 整站屏蔽:上线前忘了删测试用的 robots.txt,是收录掉光的经典原因之一。排查收录问题时先看这一行。
一句话记法:robots.txt 管的是「能不能来拿」,noindex 管的是「拿了之后要不要留」。想让它从索引里消失,得先让它被拿到。

几个容易踩的坑

第一,robots.txt 里的 Disallow 是前缀匹配,写 /admin 会连带挡住 /admin-tools 这类路径,检查时最好把规则和实际 URL 对一遍。

第二,抓取工具的表现和搜索引擎不完全一样。用第三方工具测试时,注意它是否遵守 robots.txt,否则你看到的「抓取正常」可能只是工具没拦自己。

第三,搜索引擎后台里的「已排除」类别很多,被 robots.txt 挡住和被 noindex 排除是两种不同的状态,看到数字别急着下结论,点进去看具体原因。

第四,noindex 生效需要时间,取决于蜘蛛多久重来一趟。改完之后给一点观察期,别当天看不到变化就反复改文件,来回折腾反而容易把状态搞乱。

把这两个开关分清之后,很多「明明做了处理却还在索引里」的疑问会自己散掉。真正要记住的其实只有那个顺序:先能抓,再谈不收。