很多人把 robots.txt 当成一個“連結開關”:以為只要在文件里寫下 Disallow,搜尋蜘蛛就再也看不到這個 URL。實际上,發現和抓取是两件事。robots.txt 主要约束的是抓取行為,而不是發現過程。理解這一点,才能判断当目标 URL 被屏蔽时,蜘蛛池入口頁還有多大作用。
搜尋蜘蛛是怎么“發現”一個 URL 的
搜尋蜘蛛拿到新 URL 的途径通常有這么几種:
- 從已经抓取過的頁面里顺着超連結爬,其中就包括蜘蛛池入口頁;
- 讀取站点自己提供的 sitemap 文件;
- 通過搜尋平台的 URL 提交入口被主動告知;
- 其他站点的外鏈、聚合頁、轉發内容。
這几條途径里,只有一部分會被 robots.txt 影响。sitemap 和 URL 提交本身就是主動告知,站外頁面上的連結也一样會被讀到,前提是那些頁面允许抓取。另外要注意,robots.txt 只對你自己域名下的路径生效,管不到別人頁面上的連結。
robots.txt 真正拦住的是什么
robots.txt 放在域名根目錄,作用范围是整個协议加域名。它告诉蜘蛛哪些路径不要請求。一個被 Disallow 的 URL:
- 蜘蛛通常不會去請求頁面内容;
- 但如果這個 URL 從別的地方被連結到,蜘蛛仍有可能知道它存在;
- 不同搜尋引擎的處理细节不一样,有的可能只展示一個 URL,有的干脆不展示。
所以“被屏蔽”並不等于“完全不可见”。但也要清楚另一面:蜘蛛即使知道了 URL,拿不到頁面内容,就没有依據去判断這個頁面讲什么、该不该收錄。
入口頁正常、目标 URL 被屏蔽,會發生什么
如果蜘蛛池入口頁本身可以被抓取,蜘蛛顺着連結走到目标 URL 這一步是没問题的,問题出在下一步:請求被 robots.txt 拒绝,拿不到内容。常见的结果是:
- 目标 URL 可能長期停留在“已發現但未抓取”的狀態;
- 蜘蛛池提供的發現信号被浪費,因為你並不打算让它抓取;
- 如果你本来希望這個 URL 被收錄,那這條配置等于自己给自己设障碍。
几個常见誤区
- 用 Disallow 来“隐藏”頁面。更彻底的做法是让頁面返回 404 或 410,或者允许抓取但标记 noindex。
- noindex 和 Disallow 一起用当双保險。noindex 需要蜘蛛抓到頁面才能讀到,Disallow 又让它抓不到,两者叠在一起往往達不到预期。
- 只屏蔽某個目錄,却寫错了路径或漏了通配符。一條過宽的規則可能把整站挡掉,在測試环境和正式环境切換时尤其容易發生。
建议的排查顺序
- 先用搜尋平台提供的 robots.txt 測試工具,輸入目标 URL,確認是否被拦。
- 检查有没有寫成 Disallow: / 這類過宽的規則,或路径拼寫错誤。
- 明确目的:這個 URL 是要被收錄,還是不要被收錄。
- 要收錄:放開 robots.txt,正常做入口頁連結、提交 URL、寫進 sitemap。
- 不要收錄:優先允许抓取再加 noindex,或者干脆让頁面無法訪問。
- 翻服務器日誌,確認蜘蛛是否来過、返回了什么狀態碼,不要只靠猜测。
一句话總结:robots.txt 管的是“能不能抓”,不是“能不能被知道”。在蜘蛛池入口頁里放一個被自身 robots.txt 屏蔽的 URL,通常只是让它被看见,却不會被讀到。
那還值不值得放進蜘蛛池入口頁
大多數情况下不值得。蜘蛛池的價值在于让搜尋蜘蛛更快、更稳定地發現目标 URL,前提是這個 URL 可被抓取、有實际内容、有被收錄的理由。如果它被 robots.txt 挡住,入口頁做得再细,後面几個环节也接不上,等于把精力花在了断掉的鏈條上。唯一比較合理的例外是做抓取行為的观察測試,這时记錄日誌、看訪問频率是有意义的,但不必期待它带来收錄层面的變化。