常见问题

目标 URL 被 robots.txt 屏蔽,搜索蜘蛛还能发现它吗

robots.txt 管的是抓取,不是发现。本文说明搜索蜘蛛通过入口页、sitemap、URL 提交等途径获知目标 URL 的过程,分析目标 URL 被 Disallow 后蜘蛛会如何处理,并梳理 Disallow 与 noindex 的常见搭配误区和排查顺序。

常见问题

目标 URL 被 robots.txt 屏蔽,搜索蜘蛛还能发现它吗

很多人把 robots.txt 当成一个“链接开关”:以为只要在文件里写下 Disallow,搜索蜘蛛就再也看不到这个 URL。实际上,发现和抓取是两件事。robots.txt 主要约束的是抓取行为,而不是发现过程。理解这一点,才能判断当目标 URL 被屏蔽时,蜘蛛池入口页还有多大作用。

搜索蜘蛛是怎么“发现”一个 URL 的

搜索蜘蛛拿到新 URL 的途径通常有这么几种:

  • 从已经抓取过的页面里顺着超链接爬,其中就包括蜘蛛池入口页;
  • 读取站点自己提供的 sitemap 文件;
  • 通过搜索平台的 URL 提交入口被主动告知;
  • 其他站点的外链、聚合页、转发内容。

这几条途径里,只有一部分会被 robots.txt 影响。sitemap 和 URL 提交本身就是主动告知,站外页面上的链接也一样会被读到,前提是那些页面允许抓取。另外要注意,robots.txt 只对你自己域名下的路径生效,管不到别人页面上的链接。

robots.txt 真正拦住的是什么

robots.txt 放在域名根目录,作用范围是整个协议加域名。它告诉蜘蛛哪些路径不要请求。一个被 Disallow 的 URL:

  • 蜘蛛通常不会去请求页面内容;
  • 但如果这个 URL 从别的地方被链接到,蜘蛛仍有可能知道它存在;
  • 不同搜索引擎的处理细节不一样,有的可能只展示一个 URL,有的干脆不展示。

所以“被屏蔽”并不等于“完全不可见”。但也要清楚另一面:蜘蛛即使知道了 URL,拿不到页面内容,就没有依据去判断这个页面讲什么、该不该收录。

入口页正常、目标 URL 被屏蔽,会发生什么

如果蜘蛛池入口页本身可以被抓取,蜘蛛顺着链接走到目标 URL 这一步是没问题的,问题出在下一步:请求被 robots.txt 拒绝,拿不到内容。常见的结果是:

  • 目标 URL 可能长期停留在“已发现但未抓取”的状态;
  • 蜘蛛池提供的发现信号被浪费,因为你并不打算让它抓取;
  • 如果你本来希望这个 URL 被收录,那这条配置等于自己给自己设障碍。

几个常见误区

  • 用 Disallow 来“隐藏”页面。更彻底的做法是让页面返回 404 或 410,或者允许抓取但标记 noindex。
  • noindex 和 Disallow 一起用当双保险。noindex 需要蜘蛛抓到页面才能读到,Disallow 又让它抓不到,两者叠在一起往往达不到预期。
  • 只屏蔽某个目录,却写错了路径或漏了通配符。一条过宽的规则可能把整站挡掉,在测试环境和正式环境切换时尤其容易发生。

建议的排查顺序

  1. 先用搜索平台提供的 robots.txt 测试工具,输入目标 URL,确认是否被拦。
  2. 检查有没有写成 Disallow: / 这类过宽的规则,或路径拼写错误。
  3. 明确目的:这个 URL 是要被收录,还是不要被收录。
  4. 要收录:放开 robots.txt,正常做入口页链接、提交 URL、写进 sitemap。
  5. 不要收录:优先允许抓取再加 noindex,或者干脆让页面无法访问。
  6. 翻服务器日志,确认蜘蛛是否来过、返回了什么状态码,不要只靠猜测。
一句话总结:robots.txt 管的是“能不能抓”,不是“能不能被知道”。在蜘蛛池入口页里放一个被自身 robots.txt 屏蔽的 URL,通常只是让它被看见,却不会被读到。

那还值不值得放进蜘蛛池入口页

大多数情况下不值得。蜘蛛池的价值在于让搜索蜘蛛更快、更稳定地发现目标 URL,前提是这个 URL 可被抓取、有实际内容、有被收录的理由。如果它被 robots.txt 挡住,入口页做得再细,后面几个环节也接不上,等于把精力花在了断掉的链条上。唯一比较合理的例外是做抓取行为的观察测试,这时记录日志、看访问频率是有意义的,但不必期待它带来收录层面的变化。