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 和主要導航。把该開放的正文路径、分頁路径、资源路径列出来,確認没有誤伤。
改完之後怎么驗證
- 用搜尋引擎提供的 robots.txt 測試工具,輸入几個關键 URL,看是否被允许;
- 在服務器日誌里观察蜘蛛對 robots.txt 的請求狀態,確認返回 200;
- 抽查被屏蔽目錄,確認里面没有需要被抓取的正文頁;
- 上线後隔几天再看抓取日誌,確認蜘蛛确實進入了之前被挡住的路径。
robots.txt 是抓取路径上的第一道门。把它寫清楚,比事後反复提交 URL 更省事。不要把它当成收錄開關,它只负责让蜘蛛知道哪些路可以走。