robots.txt 是放在站点根目錄下的一個纯文本文件,作用很简單:告诉爬虫哪些路径可以抓、哪些先不要抓。它不控制收錄,也不能阻止頁面被索引——真正的屏障是登入、密碼或 noindex 标记。它的麻烦之處在于,寫错之後頁面不會报错、不會 404,只是可能在几周後慢慢從结果里淡出,等你發現时已经不好回溯原因。
為什么這個小文件容易出問题
多數站点在搭建初期配置一次 robots.txt,之後很少有人再回头翻。改版、換域名、迁移目錄、開測試环境时,舊配置往往被顺手複製過去。規則一條條叠上去,几年後打開一看,既有已经不存在的目錄,也有互相冲突的寫法,没人说得清哪條還在起作用。
更現實的問题是:它太不起眼了。上线检查清單里通常會寫标题、描述、canonical,却很少留一行给 robots.txt。
三類常见的誤伤
Disallow 寫得過宽
最常见的寫法是 Disallow: /,本意是屏蔽某個目錄,结果把整站都挡住了。另一種是用通配符一口气排除某類文件,比如把 js、css 一並挡住,爬虫拿不到渲染所需的资源,對頁面的理解就會打折扣,移動端适配問题也更容易被忽略。
測試环境規則带上线
測試站為了不被抓取,通常直接寫一條禁止全站。正式上线时配置文件跟着一起搬過去,站点從此對蜘蛛關门。這類事故重复率很高,值得在上线清單里單獨列一項,逐條對比线上與測試环境的差异。
Sitemap 声明寫错或不更新
Sitemap 那一行必须是完整的绝對地址,並且指向真實可訪問的 XML 文件。域名換過、目錄調整過却没有同步,等于把爬虫引到一個打不開的地址上,既浪費抓取预算,也让人誤以為站点没有提交入口。
一份可以照着走的自查清單
- 直接訪問 你的域名/robots.txt,確認返回 200,類型是纯文本,而不是一個套着 HTML 的错誤頁。
- 逐行讀一遍 User-agent 與 Disallow 的组合,問自己:這條會不會誤伤首頁、栏目頁、列表頁,以及頁面依赖的样式和脚本。
- 確認没有残留的整站禁止規則,尤其是從測試环境带過来的那種。
- 检查 Sitemap 行是否為绝對地址、能否在浏览器里正常打開。
- 清理指向已下线目錄、舊域名、舊參數的規則,避免文件越讀越乱。
- 確認後台、备份文件、日誌目錄确實被挡在外面,而不是靠路径没人知道。
- 把线上文件和版本库里的副本對一遍,確認改動有记錄、能回滚。
改完之後怎么驗證
可以用搜尋引擎官方提供的抓取測試工具,或者手工訪問几個關键地址,確認能正常取到内容。改完不要指望马上生效,爬虫會缓存這個文件一段時間,抓取频率本身也有波動。看效果时看趋势,不要盯着單日資料下结论。
需要提醒的是:robots.txt 是抓取层面的约定,不是安全措施。真正敏感的内容,應该用權限、登入或服務端校驗来保護,而不是指望一條禁止規則。
把它纳入例行检查
建议在几個固定节点上检查:站点改版、域名迁移、环境切換、目錄结构調整。平时也可以每個季度打開讀一遍,删掉失效規則。文件越短越清晰,越容易看懂,也越不容易在几年後變成没人敢動的一团乱麻。
另外,不要频繁修改。每次改動都會让爬虫重新判断你的規則意图,短期内的抓取表現可能更不稳定。想清楚要挡什么、為什么挡,一次改到位,比反复微調更省事。