這是站点运营里经常被問到的問题:蜘蛛池入口頁如果在 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 在生效。搞清楚“谁管谁”,比反复調整連結數量更有意义。