常见問题

蜘蛛池入口頁的 robots.txt 怎么寫,哪些寫法會挡住搜尋蜘蛛

入口頁長期没有抓取记錄,問题常常出在 robots.txt。本文梳理全站 Disallow、屏蔽目錄、User-agent 分组放行、Crawl-delay 等常见寫法带来的影响,說明被屏蔽頁面里的連結為什么不會被提取,並给出一份可以逐條执行的检查清單。

常见問题

蜘蛛池入口頁的 robots.txt 怎么寫,哪些寫法會挡住搜尋蜘蛛

robots.txt 管的是能不能抓,不是抓了會不會收錄

搭入口頁时,很多人只關心連結怎么寫、一頁挂多少條,却忽略了站点根目錄下的 robots.txt。它不决定收錄,但它决定搜尋蜘蛛能不能進入入口頁。進不去,頁面里的目标 URL 自然也不會被顺着發現。所以在排查“入口頁没起作用”這類問题时,robots.txt 應该排在比較靠前的位置。

几種常见寫法會带来什么後果

Disallow: /

這是最彻底的一種。入口頁本身不會被抓取,頁面内的連結也不會被提取,入口頁等于完全没有作用。有些站点為了临时避開某些頁面的抓取加了這條規則,後来忘了删,日誌里就會長期看不到蜘蛛訪問。

只屏蔽某個目錄

如果入口頁放在 /pool/ 這類目錄下,而規則寫成了 Disallow: /pool/,在這個目錄范围内,效果和全站屏蔽是一样的。检查时要把規則和入口頁的實际路径逐條對上,尤其是批量生成入口頁时,路径结构经常會發生變化。

用 User-agent 做针對性放行

针對特定蜘蛛放行、對其它 UA 屏蔽,理论上可行,但维護成本不低。蜘蛛 UA 會調整,規則里的 UA 串一旦寫错,比如大小寫不一致或者少了關键子串,放行就會失效。除非有明确需求,一般不建议把入口頁的抓取完全押在這種精细規則上。

Crawl-delay

Crawl-delay 是建议值而不是强制值。部分搜尋引擎會參考,部分直接忽略。入口頁數量多的时候,寫一個很大的 Crawl-delay 只會让發現节奏更慢,並不會換来更有效的抓取。

robots.txt 自身返回異常时的後果

  • 返回 200:按文件内容执行規則。
  • 返回 404:通常被视為没有限制,蜘蛛可以正常抓取。
  • 返回 500 或 503:蜘蛛往往會采取保守策略,暂时减少甚至暫停對整站的抓取,等服務恢复後再来。

最後一種情况比規則寫错更难排查,因為文件内容本身看起来毫無問题,但抓取量會整体下滑。所以除了看規則,也要確認 robots.txt 這個地址本身的响應狀態是否正常。

一個容易被忽略的点:被屏蔽的頁面,里面的連結不會被提取

有人以為“屏蔽的只是頁面本身,連結還是能被看到”。實际流程並不是這样:蜘蛛要先抓取頁面,才能解析出其中的連結。被 robots.txt 挡住的頁面不會被抓取,也就走不到連結解析這一步,挂在里面的目标 URL 自然不會因此被發現。

判断起来很简單:如果日誌里從来没有入口頁的抓取记錄,先別急着改連結寫法,先看 robots.txt 和頁面的返回狀態。

實操检查清單

  1. 確認入口頁所在目錄没有被 Disallow 命中,注意前缀匹配和通配符在各引擎中的差异。
  2. 如果使用了 User-agent 分组,检查该分组的 UA 串是否覆盖了目标蜘蛛。
  3. 把 Crawl-delay 设成較小的值,或者直接去掉。
  4. 在 robots.txt 中用 Sitemap 指向站点地图,方便蜘蛛找到入口頁列表。
  5. 用搜尋引擎官方提供的 robots.txt 測試工具,驗證具体 URL 是否被放行。
  6. 改完之後观察一段時間日誌,看入口頁的抓取次數是否有變化。

不要指望用 robots.txt 做精准調度

robots.txt 本质上是一個粗粒度的開關,各引擎對通配符、最長匹配、UA 分组的處理细节並不完全一致。想让目标 URL 被稳定發現,更可靠的做法是保證入口頁可抓取、可解析、响應正常,連結直接寫在 HTML 里,而不是靠一份复杂規則去精确指挥蜘蛛。規則越简單,出問题的概率越低。