网站收录

robots.txt 与 noindex 别用反:抓取开关和索引开关的适用边界

robots.txt 和 noindex 常被当成同一件事来用,实际一个管抓取、一个管索引,用反了会互相抵消。文章说明两者的生效前提、常见误用场景,以及排查收录异常时的检查顺序,并交代撤销屏蔽后索引状态的恢复节奏。

网站收录

robots.txt 与 noindex 别用反:抓取开关和索引开关的适用边界

在排查收录问题时,经常会看到这样的操作:页面不想被搜到,就直接在 robots.txt 里 Disallow;过一段时间发现它还在搜索结果里,于是又补了一条 noindex。两个动作分开看都没错,合在一起却常常互相抵消。原因在于,这两个开关作用在收录链条的不同环节上。

抓取和索引是两个先后动作

搜索引擎处理一个 URL,大致会经过:发现 URL、抓取页面内容、解析并判断是否索引、索引后再决定是否展现。robots.txt 管的是第二步,noindex 管的是第三步。跳过任何一步,后面的动作都无从谈起。

robots.txt:挡住抓取,不等于摘掉索引

  • Disallow 只是请求爬虫不要抓取某个路径,它不会删除已经进入索引的页面。已经收录的 URL,即使之后被屏蔽,仍可能因为外部链接、标题等信息继续出现在结果里。
  • 更关键的是,禁止抓取之后,爬虫读不到页面上的 noindex,也就无法确认这个页面应该被移除。想用 noindex 下线页面,前提是页面必须可被抓取。
  • 整站屏蔽还会连带影响 sitemap 的提交、canonical 的读取(需要抓取目标页才能确认指向),以及新内容的发现。

noindex:只对能被读到的页面生效

  • meta robots:写在 HTML 的 head 里,只对 HTML 页面有效,PDF、图片等资源读不到。
  • X-Robots-Tag:写在 HTTP 响应头里,可以覆盖非 HTML 资源,适合批量处理某类文件。
  • 两种写法都要保证页面返回 200 且允许抓取,否则指令读不到;同时注意别把 noindex 写在 robots.txt 已屏蔽的目录下。

几种常见的用反场景

  1. 站点改版期间整体 Disallow,上线后忘了撤掉,导致新内容长期只有“已发现”没有抓取。
  2. 想让某批页面退出索引,先 Disallow 再加 noindex,结果两边都不生效。
  3. 用 noindex 处理不想收录的 URL,但没有同步清理内链,站内链接持续把爬虫引向这些页面。
  4. 测试环境加了 X-Robots-Tag,上线时配置没有一起迁走。

排查时的顺序建议

  1. 先看 robots.txt 是否对该路径有 Disallow,确认目标 URL 可被抓取。
  2. 再看页面返回码:noindex 指令只有在 200 状态下才有意义,301、404 走的是另一套逻辑。
  3. 接着确认 noindex 的载体:HTML 页面看 meta,非 HTML 资源看响应头。
  4. 最后看内链与外链。只要还有入口,爬虫就会反复来,这也解释了为什么屏蔽之后日志里仍能看到抓取尝试。
一个实用的判断:如果既不希望页面被抓取,也不希望它被索引,通常用“允许抓取 + noindex”;如果只是不想浪费抓取资源(比如搜索结果页、无限筛选参数),才用 robots.txt 屏蔽。

撤销屏蔽之后

把 Disallow 去掉或者把 noindex 移除,不等于索引状态立刻同步。爬虫需要重新抓取到这个变化,索引才会跟着更新,快慢取决于页面重要程度和抓取频次。这期间可以配合 sitemap 提交和内链加强,让关键页面更快被重新抓取。对已经收录但想下线的页面,除了加 noindex,还要确认页面本身是否应该返回 404 或 410,避免长期停留在“可抓取但标记不索引”的状态。

把这两个开关分开理解,收录问题就少了一半误判:抓取是前提,索引是结果,先确认前提是否成立,再谈结果。