先说结论:如果入口頁被 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,再看响應狀態碼和响應头,然後看服務器是不是根本没把這個路径解析對,最後才去怀疑抓取节奏。多數情况下問题就出在前两步。