搜尋抓取

robots.txt 與蜘蛛抓取:入口處的規則怎么寫才不挡路

robots.txt 是蜘蛛進站前讀取的規則文件,寫错會直接改變抓取路径。本文梳理常见誤屏蔽、值得保留的配置,以及它和内鏈、Sitemap 的配合方式,並给出改完後的驗證步骤,帮助站点减少不必要的抓取断点。

搜尋抓取

robots.txt 與蜘蛛抓取:入口處的規則怎么寫才不挡路

robots.txt 是蜘蛛進站前會請求的一個文件,它不决定頁面是否被索引,但會直接影响蜘蛛能不能走到某些 URL。很多抓取問题不是服務器慢,也不是内鏈少,而是入口處的規則把该走的路封掉了。

蜘蛛讀 robots.txt 的顺序

蜘蛛抓取一個站点时,通常會先請求根目錄下的 robots.txt,再根據里面的 Disallow 和 Allow 規則判断哪些路径可以抓。它讀的是路径前缀,不是頁面内容。也就是说,一條 Disallow 寫下去,蜘蛛不會先去判断這個頁面有没有價值,而是直接跳過。

如果 robots.txt 返回 5xx,蜘蛛可能暂时停止抓取;返回 404,則通常视為没有限制。服務器稳定性在這里同样重要,一個不稳定的 robots.txt 會让抓取节奏變得不确定。

常见誤屏蔽:把不该挡的挡了

屏蔽 CSS 和 JS

有些站点為了省抓取,會在 robots.txt 里屏蔽 /css/、/js/ 目錄。蜘蛛虽然不一定會渲染所有资源,但屏蔽後,它更难判断頁面结构和移動适配。如果希望蜘蛛理解頁面,至少不要把這些基础资源一刀切。

屏蔽分頁和篩選參數

分頁路径是蜘蛛向内走的重要通道。把 /page/ 或带 page 參數的 URL 全部屏蔽,蜘蛛可能只能看到列表第一頁,後面的内容缺少入口。篩選參數可以按情况處理,但分頁最好保留可抓路径。

Disallow: / 的誤用

測試站或改版期間用 Disallow: / 挡住全站,上线後忘记刪除,是常见的抓取断点。蜘蛛再来时仍然讀到舊規則,就不會繼續抓。上线前要確認這條規則已经移除或改成只挡測試目錄。

robots.txt 里值得保留的内容

  • 声明 Sitemap 地址,帮助蜘蛛發現站点地图;
  • 只屏蔽确實不需要抓取的目錄,比如後台、购物车、临时文件;
  • 如果站点有多個子域或目錄,分別寫清楚路径,不要用一條規則覆盖全部;
  • 規則尽量简單,避免大量 Allow 和 Disallow 互相覆盖,增加判断成本。
robots.txt 管的是“能不能抓”,不是“能不能收錄”。屏蔽一個 URL,不代表它會從索引里消失;反過来,放開抓取也不等于一定被收錄。

和内鏈、Sitemap 的關系

robots.txt 决定蜘蛛能不能走,内鏈和 Sitemap 决定蜘蛛有没有路可走。三者要一起看:Sitemap 里列出的 URL 如果被 robots.txt 屏蔽,蜘蛛讀到地图也不會去抓;内鏈指向的頁面如果被屏蔽,連結再多也到不了。

所以調整 robots.txt 时,最好同步检查 Sitemap 和主要導航。把该開放的正文路径、分頁路径、资源路径列出来,確認没有誤伤。

改完之後怎么驗證

  1. 用搜尋引擎提供的 robots.txt 測試工具,輸入几個關键 URL,看是否被允许;
  2. 在服務器日誌里观察蜘蛛對 robots.txt 的請求狀態,確認返回 200;
  3. 抽查被屏蔽目錄,確認里面没有需要被抓取的正文頁;
  4. 上线後隔几天再看抓取日誌,確認蜘蛛确實進入了之前被挡住的路径。

robots.txt 是抓取路径上的第一道门。把它寫清楚,比事後反复提交 URL 更省事。不要把它当成收錄開關,它只负责让蜘蛛知道哪些路可以走。