常见問题

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