robots.txt 放在網站根目錄,内容通常只有几行,但它决定了蜘蛛能走進哪些路径、不能走進哪些路径。正因為简單,很多站点在改版、迁移或多人协作时容易忽略它,等發現抓取量下滑才回头排查。這篇文章把 robots.txt 的常见問题和维護動作整理成一份可执行的自查思路。
為什么一條規則會造成整站影响
robots.txt 的匹配方式不像很多人想象的那样只看目錄名。它按路径前缀匹配,還支持 * 和 $ 通配符,且不同爬虫對規則细节的處理可能存在差异。一旦寫成 Disallow: /,或者把不该屏蔽的目錄寫進規則,蜘蛛可能直接停止訪問大量頁面。更麻烦的是,這類問题往往不會让服務器报错,從监控上看一切正常,只有抓取日誌和收錄資料才會慢慢反映出来。
常见的几類誤伤场景
- 整站屏蔽:測試环境或维護頁面的規則被誤同步到生产环境,文件里只留了一行 Disallow: /。
- 路径寫得太宽:想屏蔽某個參數目錄,却寫成了 Disallow: /search,结果把正常的 /search-guide/ 之類的路径一起挡住。
- 通配符用错位置:想屏蔽带參數的地址,規則寫成 Disallow: /*?,把一些静態路径也牵连進去。
- 忘记 Allow 回补:大目錄被屏蔽後,其中個別需要抓取的頁面没有用 Allow 單獨放行。
- Sitemap 地址寫错:文件里声明的 sitemap 地址不是最终可訪問的版本,或者域名寫成了測試域名。
- 多域名共用一份文件:主站、子站、移動站共用同一份 robots.txt,規則之間互相打架。
上线前的检查清單
每次改動 robots.txt,建议按下面的顺序過一遍,不要只靠记忆。
- 用浏览器直接訪問域名根目錄下的 robots.txt,確認返回 200,並且内容是最新版本而不是 CDN 缓存的舊文件。
- 全文搜尋 Disallow: /,確認没有整站屏蔽;如果有,確認是否為有意為之。
- 逐條核對每條路径,尤其注意目錄名後面有没有多加斜杠、有没有少寫斜杠、大小寫是否和實际 URL 一致。
- 检查 Allow 規則,確認需要抓取的目錄没有被上一條 Disallow 誤伤。
- 核對 Sitemap 行,確認协议、域名和路径都能正常訪問。
- 在搜尋引擎的 robots.txt 測試工具里跑一遍,輸入几個典型 URL,看看结果是否符合预期。
- 把改動内容、時間、操作人记在變更记錄里,方便出問题时快速回滚。
维護节奏與协作习惯
robots.txt 不需要频繁調整,但需要有人负责。可以约定一個固定的检查周期,比如每月一次,或者在改版、迁移、新栏目上线前後各看一次。多人协作的团队,最好把根目錄文件的修改權限收拢到少數几個人,其他成員通過工單或需求單提出變更。服務器层面的 301、CDN 回源、測試域名解析這些环节,也可能让 robots.txt 出現和生产环境不一致的版本,部署後顺手訪問一次就能發現。
robots.txt 只表達抓取意愿,不是訪問控制手段。不要把内部文档、後台地址、用戶資料目錄等内容放在公開可訪問的目錄里,再指望用 robots.txt 藏起来。真要限制訪問,應该用登入、權限或網絡层策略。
出問题後的排查顺序
如果怀疑 robots.txt 影响了抓取,可以先看抓取日誌里蜘蛛對根目錄文件的請求频率和返回狀態,再检查文件内容是否被改動。確認規則有誤後,及时修正並提交新版本,同时观察後續几天的抓取量變化。不要因為一次誤伤就频繁調整規則,稳定、可解释的規則比来回试探更有利于長期维護。
把 robots.txt 当成站点结构的一部分来管理,而不是一個寫完就忘的文本文件,能减少很多不必要的抓取波動。