站点运营

站点运营:robots.txt 規則自查,別让蜘蛛被自己的禁令挡在门外

robots.txt 一旦寫错,頁面不會报错、也不會消失,只會慢慢從搜尋结果里淡出。它通常只在建站时配置一次,改版、換域名、切換环境时经常被一起複製過来。這篇文章梳理三類常见誤伤和一份可执行的自查清單,帮你把這個小文件的检查纳入例行流程。

站点运营

站点运营:robots.txt 規則自查,別让蜘蛛被自己的禁令挡在门外

robots.txt 是放在站点根目錄下的一個纯文本文件,作用很简單:告诉爬虫哪些路径可以抓、哪些先不要抓。它不控制收錄,也不能阻止頁面被索引——真正的屏障是登入、密碼或 noindex 标记。它的麻烦之處在于,寫错之後頁面不會报错、不會 404,只是可能在几周後慢慢從结果里淡出,等你發現时已经不好回溯原因。

為什么這個小文件容易出問题

多數站点在搭建初期配置一次 robots.txt,之後很少有人再回头翻。改版、換域名、迁移目錄、開測試环境时,舊配置往往被顺手複製過去。規則一條條叠上去,几年後打開一看,既有已经不存在的目錄,也有互相冲突的寫法,没人说得清哪條還在起作用。

更現實的問题是:它太不起眼了。上线检查清單里通常會寫标题、描述、canonical,却很少留一行给 robots.txt。

三類常见的誤伤

Disallow 寫得過宽

最常见的寫法是 Disallow: /,本意是屏蔽某個目錄,结果把整站都挡住了。另一種是用通配符一口气排除某類文件,比如把 js、css 一並挡住,爬虫拿不到渲染所需的资源,對頁面的理解就會打折扣,移動端适配問题也更容易被忽略。

測試环境規則带上线

測試站為了不被抓取,通常直接寫一條禁止全站。正式上线时配置文件跟着一起搬過去,站点從此對蜘蛛關门。這類事故重复率很高,值得在上线清單里單獨列一項,逐條對比线上與測試环境的差异。

Sitemap 声明寫错或不更新

Sitemap 那一行必须是完整的绝對地址,並且指向真實可訪問的 XML 文件。域名換過、目錄調整過却没有同步,等于把爬虫引到一個打不開的地址上,既浪費抓取预算,也让人誤以為站点没有提交入口。

一份可以照着走的自查清單

  1. 直接訪問 你的域名/robots.txt,確認返回 200,類型是纯文本,而不是一個套着 HTML 的错誤頁。
  2. 逐行讀一遍 User-agent 與 Disallow 的组合,問自己:這條會不會誤伤首頁、栏目頁、列表頁,以及頁面依赖的样式和脚本。
  3. 確認没有残留的整站禁止規則,尤其是從測試环境带過来的那種。
  4. 检查 Sitemap 行是否為绝對地址、能否在浏览器里正常打開。
  5. 清理指向已下线目錄、舊域名、舊參數的規則,避免文件越讀越乱。
  6. 確認後台、备份文件、日誌目錄确實被挡在外面,而不是靠路径没人知道。
  7. 把线上文件和版本库里的副本對一遍,確認改動有记錄、能回滚。

改完之後怎么驗證

可以用搜尋引擎官方提供的抓取測試工具,或者手工訪問几個關键地址,確認能正常取到内容。改完不要指望马上生效,爬虫會缓存這個文件一段時間,抓取频率本身也有波動。看效果时看趋势,不要盯着單日資料下结论。

需要提醒的是:robots.txt 是抓取层面的约定,不是安全措施。真正敏感的内容,應该用權限、登入或服務端校驗来保護,而不是指望一條禁止規則。

把它纳入例行检查

建议在几個固定节点上检查:站点改版、域名迁移、环境切換、目錄结构調整。平时也可以每個季度打開讀一遍,删掉失效規則。文件越短越清晰,越容易看懂,也越不容易在几年後變成没人敢動的一团乱麻。

另外,不要频繁修改。每次改動都會让爬虫重新判断你的規則意图,短期内的抓取表現可能更不稳定。想清楚要挡什么、為什么挡,一次改到位,比反复微調更省事。