这是站点运营里经常被问到的问题:蜘蛛池入口页如果在 robots.txt 里被 Disallow,之前放在里面的那些目标 URL 链接,还有机会被搜索蜘蛛发现和抓取吗?答案要分两层看——robots.txt 限制的是“抓取”,而不是“发现”,但一个被屏蔽的页面本身不会被读取,里面写了什么自然也就无从谈起。
一、robots.txt 的作用边界
robots.txt 是放在域名根目录下的文本文件,用来告诉遵守协议的爬虫哪些路径可以抓、哪些不要抓。它属于一种约定,不是访问控制。
- 它只约束该域名下的 URL,对同域之外的链接没有约束力。
- 它阻止的是抓取行为,不等于阻止 URL 进入索引——被 Disallow 的 URL 仍可能因为外部链接而出现在结果里,只是缺少有效摘要。
- 遵守程度取决于爬虫本身,主流搜索爬虫基本会遵守,但其他抓取工具不一定。
二、入口页自己被 Disallow 时会发生什么
如果你在入口页所在域写了 Disallow: /,或者屏蔽了入口页所在目录,那么爬虫在请求之前会先读取 robots.txt,发现被禁止,通常就不会去抓这个入口页。页面没有被抓取,里面的链接也就不会被解析。
几个容易被忽略的细节:
- 已经抓取并进入索引的入口页不会立刻消失,但后续重新抓取会被拦下,它作为“链接发现通道”的作用基本停止。
- 如果入口页此前被正常抓过,搜索引擎可能已经拿到了里面的链接,这部分存量发现还会保留一段时间。
- 屏蔽整站会连带影响该域其他正常页面,动手前先确认域内有没有需要被收录的页面。
希望入口页持续提供发现路径,就不要把入口页本身或它所在目录写进 Disallow。屏蔽和 noindex 是两件事,混用很容易出现“既没被收录,也没被用来发现链接”的结果。
三、如果屏蔽的是目标 URL 所在路径
这里有个常见误解:入口页和目标站通常不是同一个域,入口页所在域的 robots.txt 根本管不到目标站的 URL。真正决定目标 URL 能不能被抓的,是目标站自己域名下的那份 robots.txt。
- 入口页侧的 robots.txt 只影响入口页能不能被抓、里面的链接能不能被读到。
- 目标站侧如果屏蔽了目标路径,蜘蛛即使从入口页发现了 URL,也不会去抓取。
- 发现与抓取是两回事:URL 有可能出现在索引中,但内容抓不到,摘要和快照质量会很差。
四、几种控制手段的区别
- Disallow:阻止抓取。页面内容读不到,里面的链接也读不到。
- noindex:允许抓取、禁止收录。页面能被读,里面的链接仍可能被发现。
- nofollow:不跟随该链接,但链接本身仍可能被识别到。
- 登录或验证码:爬虫一般直接放弃,效果等同于读不到内容。
五、实操建议
- 先确认入口页域的 robots.txt 没有屏蔽入口页本身或它所在目录。
- 再检查目标站域的 robots.txt,确认目标路径没有被禁止抓取。
- 用抓取测试类工具或日志验证:入口页是否真的被请求过,返回状态是否为 200。
- 在入口页日志里观察,蜘蛛读完入口页之后是否继续请求了目标 URL,用数据判断而不是靠猜测。
- 如果暂时不希望某些入口页被抓,使用访问控制等手段更贴近真实意图,而不是先 Disallow 再期待里面的链接被发现。
总结一句:屏蔽入口页,等于把入口页从蜘蛛可读的范围里拿掉,里面的链接基本失去作用;屏蔽目标路径,则要先看清是哪一份 robots.txt 在生效。搞清楚“谁管谁”,比反复调整链接数量更有意义。