robots.txt 是站点和爬虫之間最简單的一份约定,放在根目錄,纯文本,几行字。它不复杂,但一旦寫错,影响面往往是整站級:轻則某些目錄長期不被訪問,重則整站抓取被拦在门外。這篇不聊花式寫法,只把容易出問题的几處挑出来,做成一份可以照着走的自查清單。
先明确它管什么、不管什么
robots.txt 只做一件事:告诉遵守协议的爬虫,哪些路径不建议抓。它不是訪問控制,也不是刪除工具。被 Disallow 的頁面如果已经被收錄,不會因為這一行字就消失;頁面也不该靠它保護隐私或敏感資料,那需要登入、權限或服務器层面的限制。
另外要记住:不同爬虫對协议的支持程度不完全一样,規則寫得越绕,解讀分歧越大。
几個高频寫错的地方
- Disallow: / 覆盖了整站,却没人發現。測試或临时封站时加上的規則,上线後忘了删,是常见事故。
- 把 Disallow 和 Allow 的顺序搞混。多數主流爬虫按最長匹配優先,相同長度时 Allow 優先,但規則一多就难判断,不如一開始就寫清楚。
- 路径没寫全。寫 Disallow: /admin 會连带屏蔽 /admin-panel、/administrator,而本意往往只是想挡一個目錄。改成 /admin/ 會准确得多。
- Sitemap 地址寫错或漏寫。這是文件里少數能主動提供信息的地方,寫對能省不少事。
- 通配符和结尾符号凭感觉用。星号和美元符号的支持情况參差,能用明确路径就別用花式匹配。
- 文件返回 200 但内容是空的,或者直接返回 404。前者让爬虫以為什么都不许,後者让爬虫以為没有限制,两種结果完全不同,需要分清楚。
改一次,驗證一次
- 浏览器直接打開 域名/robots.txt,確認能正常返回、没有跳轉、没有奇怪的字符编碼。
- 確認文件里没有整站級的 Disallow,除非你确實需要临时全站封閉。
- 检查 Sitemap 行是否指向可訪問的地址,且地址與目前域名一致,做過迁移的站点尤其要看。
- 用搜尋平台提供的抓取測試工具模拟一次,看重点目錄是否仍在可抓范围。
- 改動後观察一段時間抓取日誌,看被屏蔽目錄的訪問量是否按预期下降,未被屏蔽的主干目錄是否正常。
別把它当成一次性配置
站点结构變了、栏目下架了、临时活動頁要挡一下,這些都會让 robots.txt 需要更新。比較稳妥的做法是把它纳入發布流程:涉及目錄增删、域名切換、临时封站时,明确谁负责改、谁负责复核。
一個可用的判断标准:如果你没法用一句话说清每條規則挡的是哪類頁面,那這條規則大概寫得太模糊了。
最後提醒一句,robots.txt 只對守規矩的爬虫有效,真正盯上你資料的人不看這份文件。所以该用權限控制的地方就用權限控制,別指望几行文本兜底。