常见问题

robots.txt 禁止抓取入口页,里面的目标 URL 还能被搜索蜘蛛发现吗?

robots.txt 的 Disallow 只拦抓取,不拦发现。入口页一旦被拦,蜘蛛就不会请求这个页面,页面里的目标链接自然读不到,作为发现通道基本失效。本文梳理按目录拦截、按 UA 拦截、noindex 与 Disallow 混用等常见情形,并给出排查顺序,同时提醒区分发现与收录。

常见问题

robots.txt 禁止抓取入口页,里面的目标 URL 还能被搜索蜘蛛发现吗?

先说结论:如果入口页被 robots.txt 的 Disallow 拦住,搜索蜘蛛通常不会去抓这个页面,也就读不到页面里写的目标链接。但被拦住的只是「抓取入口页」这个动作,目标 URL 本身仍可能通过其他渠道被发现,比如其他未被拦的页面上的链接、sitemap、外链或站长平台提交。也就是说,这个入口页作为「发现通道」的作用基本失效了。

Disallow 与「看不见」的区别

robots.txt 里的 Disallow 是针对抓取行为的一道约定,蜘蛛会跳过这个路径,不去请求页面内容。既然没有请求,也就没有 HTML,页面里那些 a 标签、href 属性自然都不会被解析。

很多人会把它和 noindex 混在一起。noindex 需要蜘蛛先抓到页面、读到 meta 标签或响应头才生效;Disallow 是根本不抓。两者机制不同,效果也不一样。

几种常见情形

只 Disallow 入口页自身

入口页不抓,页面内的链接全部看不到。如果目标 URL 还存在其他入口页,那部分照常工作,不必因为一个页面被拦就全盘推翻。

Disallow 整个目录

常见于把蜘蛛池入口页统一放在 /pool/ 之类目录下。结果就是该目录下所有页面都不被抓,包括你以为还在起作用的页面。这属于典型的配置意外,检查时最好把 robots.txt 拉出来逐条核对路径前缀,注意有没有多写少写斜杠。

只对某类 UA 生效

针对特定 UA 写规则,只在对应 UA 访问时生效。这种做法本身会带来内容差异化的问题,日志里的抓取记录也会更难判断,不建议作为常规手段。

noindex 的那条经典坑

很多人想让入口页不被收录,就给入口页加 noindex,同时期待它还能传递目标链接的发现。理论上 noindex 的页面蜘蛛仍会抓取、仍能解析链接,这一点和 Disallow 不同。

但如果同时用 Disallow 挡抓取,蜘蛛就看不到 noindex 标签了,结果可能既不抓、也仍然被索引,方向正好相反。

想控制收录,用 noindex;想控制抓取,用 Disallow。两件事不要叠在一起用。

想让入口页作为发现通道怎么办

  1. 确认 robots.txt 没有拦到入口页路径。可以在对应 UA 下直接请求 robots.txt,看实际返回的内容,而不是看本地那份。
  2. 确认入口页返回状态码正常,能被正常渲染,别让一层跳转或错误页把内容吃掉。
  3. 用服务器日志验证蜘蛛确实来过,别只看工具里显示的「提交成功」。
  4. 不要把发现渠道全押在一个入口页上,sitemap 和站内链接仍然是基本盘。

另外要分清「发现」和「收录」:被抓过只说明蜘蛛知道了这个 URL,是否收录取决于内容质量、站点整体情况等很多因素,入口页解决不了这部分问题。蜘蛛池能让 URL 更快进入抓取队列,但不等于能推动收录,也不存在稳定的效果保证。

排查时如果发现某个入口页长期没有抓取记录,顺序建议是:先看 robots.txt,再看响应状态码和响应头,然后看服务器是不是根本没把这个路径解析对,最后才去怀疑抓取节奏。多数情况下问题就出在前两步。