网站收录

robots.txt 和 noindex 别用反:阻止抓取不等于阻止收录

robots.txt 管的是抓取,noindex 管的是收录,两者生效的顺序不能颠倒。很多页面用了 Disallow 之后仍出现在搜索结果里,就是因为爬虫进不来,读不到页面上的 noindex。本文梳理两者的区别、三种常见需求和几个容易踩坑的场景,并给出验证方法。

网站收录

robots.txt 和 noindex 别用反:阻止抓取不等于阻止收录

一个很常见的操作是:某个栏目、测试目录或后台入口不想被搜索引擎收录,于是在 robots.txt 里 Disallow 掉。过一段时间用 site: 一查,发现相关 URL 还是出现在索引里,只是没有摘要。这时候很多人以为是搜索引擎不听话,其实多半是用错了工具。

抓取和收录是两步,顺序不能颠倒

搜索引擎处理一个 URL,大致分两步:先抓取,把页面内容下载回来;再判断内容质量、去重,决定是否编入索引。

robots.txt 作用在第一步,告诉爬虫哪些路径不要来抓;noindex 作用在第二步,告诉搜索引擎这个页面不要放进索引。两者管的环节不同。

关键在于:noindex 是一段写在页面里的指令,搜索引擎必须先抓到页面,才能读到它。如果 robots.txt 已经把这条 URL 挡住了,爬虫根本进不来,也就永远看不到页面里的 noindex。

robots.txt 挡抓取后,页面反而可能被收录

很多人以为 Disallow 等于删除。实际上 robots.txt 只是请求爬虫不要抓取,它并不阻止 URL 出现在索引里。原因不复杂:搜索引擎可以通过外链、站点地图、其他页面的链接知道这个 URL 存在。当它被较多链接指向、或本身就是别处引用过的地址时,搜索引擎可能仅凭链接和锚文本就把它展示出来,只是内容摘要缺失。

反过来,这样一条“被索引但没有内容”的记录会很难处理:你既控制不了它显示什么,也没法靠 noindex 让它退出。

按需求选工具

  • 完全不想被收录、页面可以保留:用 noindex,同时确保 robots.txt 允许抓取这条 URL。
  • 只想减少爬虫压力、页面本身可以收录:用 robots.txt Disallow,但要接受它仍可能被索引。
  • 页面已经删除:返回 404,长期不再需要的用 410,比 robots 或 noindex 更直接。
  • 整站或整目录敏感、连抓取都不允许:robots.txt Disallow,但要清楚索引里可能残留 URL,必要时再配合搜索后台的移除工具。

几个容易用错的场景

  1. 测试环境加了 robots.txt,但还是被搜到。爬虫没抓页面,noindex 读不到;如果测试站又被外链引用,就更容易进入索引。
  2. 登录页、后台入口想隐藏。只写 Disallow 往往不够,URL 一旦被外部引用,仍可能出现在结果里。
  3. 分页、筛选参数只想拦抓取。可以 Disallow,但不要指望它们就此彻底消失。
  4. 页面里写了 noindex,robots.txt 又同时 Disallow 同一路径。结果是 noindex 失效,白写。

怎么验证自己的设置

检查顺序可以固定下来:先在搜索引擎的抓取测试或 URL 检查工具里,确认这条 URL 是否被 robots.txt 阻止;如果被阻止,回头确认自己的真实目的——是想不抓,还是想不收录;如果目的是不收录,就先放开抓取、保留 noindex,再等重新抓取后观察索引变化;如果页面已经删除,直接返回 404 或 410 更省事。

记住一条判断顺序:先想清楚要不要它进入索引,再决定要不要让爬虫抓。抓取只是手段,索引才是结果。