先说结论:如果入口页被 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。两件事不要叠在一起用。
想让入口页作为发现通道怎么办
- 确认 robots.txt 没有拦到入口页路径。可以在对应 UA 下直接请求 robots.txt,看实际返回的内容,而不是看本地那份。
- 确认入口页返回状态码正常,能被正常渲染,别让一层跳转或错误页把内容吃掉。
- 用服务器日志验证蜘蛛确实来过,别只看工具里显示的「提交成功」。
- 不要把发现渠道全押在一个入口页上,sitemap 和站内链接仍然是基本盘。
另外要分清「发现」和「收录」:被抓过只说明蜘蛛知道了这个 URL,是否收录取决于内容质量、站点整体情况等很多因素,入口页解决不了这部分问题。蜘蛛池能让 URL 更快进入抓取队列,但不等于能推动收录,也不存在稳定的效果保证。
排查时如果发现某个入口页长期没有抓取记录,顺序建议是:先看 robots.txt,再看响应状态码和响应头,然后看服务器是不是根本没把这个路径解析对,最后才去怀疑抓取节奏。多数情况下问题就出在前两步。