蜘蛛池知识

蜘蛛池入口頁的 robots.txt 與 meta robots:放行、屏蔽與高频誤配

robots.txt 與 meta robots 是入口頁能否被抓取的前置條件,却常被当成上线後再说的小事。本文梳理這两類指令在蜘蛛池场景下的作用范围、缓存延迟、與 sitemap 的配合方式,列出几類高频誤配,並给出改完之後可以执行的驗證思路。

蜘蛛池知识

蜘蛛池入口頁的 robots.txt 與 meta robots:放行、屏蔽與高频誤配

排查“蜘蛛不来”的时候,很多人第一反應是服務器、DNS 或者入口頁數量不够,但真正卡住蜘蛛的往往是更靠前的一道闸门:robots.txt 和頁面級的 robots 指令。這两處不解决,後面准备多少域名、多少内容都是白做工。

robots.txt 在蜘蛛池里到底管什么

入口頁通常挂在獨立域名或子域名下,robots.txt 放在根目錄,對该域名下的所有路径生效。它决定的是“允不允许抓”,而不是“抓了之後排不排”,很多人把這两件事混為一谈,于是用屏蔽索引的指令去解决抓取問题,方向從一開始就是错的。

最常见的誤配是把測試环境的 Disallow: / 直接带上线。這個寫法让所有蜘蛛整站止步,而頁面本身依然返回 200,日誌里看不到任何报错,排查时极易被跳過。建议在上线检查清單里固定加一條:用 curl 拉一次入口域名的 robots.txt,肉眼確認内容。

缓存延迟要提前考虑

蜘蛛會缓存抓到的 robots.txt,更新周期因引擎而异,從几小时到一天以上都有可能。這意味着改完配置之後,抓取量不會立刻恢复曲线,不要因為当天没變化就再改一遍,反复改動反而让狀態更难判断。

另一個反直觉的点是狀態碼:robots.txt 返回 404 时,多數引擎按“無限制”處理,等于全站放行;返回 5xx 或超时,則可能触發短期的抓取暫停。所以“不小心把 robots.txt 干掉”未必是坏事,但“服務器抖動導致 robots.txt 超时”确實會连带影响整站抓取。

meta robots 與 X-Robots-Tag 的分工

meta robots 寫在 HTML 的 head 里,作用于單個頁面;X-Robots-Tag 寫在 HTTP 响應头里,同样作用于该响應,但優势是不用改模板,特別适合批量生成的入口頁——在服務端配置里统一加一行即可覆盖整個目錄。

两者同时存在且互相冲突时,一般按更嚴格的那條执行。所以不要一邊在响應头寫 noindex,一邊在模板里寫 index,最後看到的结果和预期不一致,還會浪費大量時間猜原因。

noindex 和 nofollow 是两件事

入口頁如果定位是連結中轉站,本身不需要進入索引,用 noindex, follow 是常见做法:頁面不占索引位,但頁面上的連結仍然被跟進。如果誤寫成 noindex, nofollow,蜘蛛可能照常抓取頁面,却不繼續走連結,發現通道就此断掉。

也要注意,如果一個入口頁域名下几乎所有頁面都是 noindex,蜘蛛的回訪频率往往會在几周内慢慢走低。這时需要靠稳定的更新节奏、正常的内部連結结构去维持抓取意愿,而不是靠堆頁面數量补回来。

几類高频誤配

  • robots.txt 里用 User-agent: * 加 Disallow: /,把包括目标引擎在内的所有蜘蛛一起挡掉。
  • 放行了頁面路径,却屏蔽了 CSS、JS 所在目錄,蜘蛛拿到的頁面结构不完整。
  • 只放行了無參數路径,带參數的入口頁 URL 被整段屏蔽,實际可抓頁面所剩無几。
  • robots.txt 里寫了 Sitemap 地址,但该地址返回 404 或指向另一個域名,白白浪費一次發現机會。
  • 跳轉頁上同时用了 302 加 noindex,蜘蛛對“要不要跟進”的判断變模糊,抓取节奏明顯放缓。
  • 模板複製时把測試域名的 noindex 一起複製過去,线上大片頁面無法進入索引。

一套可參考的配置思路

入口路径放行;後台、日誌、临时目錄、接口路径全部屏蔽;robots.txt 中声明 sitemap 地址並確認可訪問;入口頁按用途决定是否 noindex,但保留 follow;全局性的指令優先用 X-Robots-Tag 在服務端统一處理,避免模板遗漏。

這套思路的核心是“先明确每個入口頁的角色”,再决定给什么指令。角色没定清楚就套模板,誤配几乎是必然的。

改完之後怎么驗證

  1. 用搜尋引擎提供的 robots 測試工具跑一遍,看具体 URL 是被允许還是被屏蔽。
  2. 用 curl -I 查看响應头,確認 X-Robots-Tag 的值與预期一致,没有多层配置互相覆盖。
  3. 在抓取日誌里按狀態碼和路径分组,观察改動後目标路径的請求量是否回升。
  4. 观察窗口至少留够一两周,把缓存延迟和已有队列的消化時間算進去。

指令层面的問题往往花費不高却能堵住大量無效工作。與其在入口頁數量上不断加碼,不如先把“允许抓、允许跟”這两個前提確認清楚。