robots.txt 是一個放在根目錄下的纯文本文件,作用是告诉爬虫哪些路径可以抓、哪些先不要抓。它不复杂,但因為改動成本低、影响范围大,经常成為站点上线或改版时最容易出問题的一环:多寫一行斜杠,可能挡住整站;少寫一個目錄,可能让後台或測試环境被反复訪問。
下面這份自查思路,不追求覆盖所有细节,更适合在每次结构變動後走一遍,確認規則和實际情况對得上。
先確認它到底是什么角色
robots.txt 是建议,不是强制拦截。大部分正規搜尋引擎會遵守,但不會因此阻止其他程序訪問。它管的是能不能抓,不是能不能被收錄:一個被 Disallow 的頁面,如果被外部連結引用,仍有机會以無摘要的形式出現在结果里。
所以想让某個頁面彻底不出現,通常的做法是:允许抓取,同时在頁面上加 noindex;或者用登入驗證把它挡在外面。用 robots.txt 直接屏蔽,反而可能让 noindex 没机會被讀到。
语法和匹配規則里最容易出错的地方
路径匹配是前缀匹配
Disallow: /news 會同时挡住 /news、/newslist、/news-2024 這類以 /news 開头的地址,而不是只挡目錄。想只挡目錄本身,通常寫成 Disallow: /news/,並注意是否還有其他路径共享這個前缀。
通配符要克制使用
星号可以匹配任意字符,美元符号表示结尾,用得好能压缩規則數量,用得太随意會让規則难以复核。比如屏蔽带參數的地址时,先確認這個參數是不是真的有重复抓取的問题,再决定是全部屏蔽還是只屏蔽特定组合。
Allow 與 Disallow 的優先關系
当两條規則長度不同时,一般以更具体的那條為准。常见的寫法是用 Disallow 挡住整個目錄,再用 Allow 放行其中某個子目錄,這種组合要寫清顺序和路径,改完最好用抓取測試工具驗證一次實际结果。
一份可执行的自查清單
- 訪問域名根目錄的 robots.txt,確認返回的是纯文本内容,而不是 CDN 或 WAF 返回的错誤頁、登入頁或 403。
- 確認没有把整站寫進 Disallow,改版期間临时屏蔽的規則是否已经撤掉。
- 逐個核對被屏蔽的目錄:後台、用戶中心、搜尋參數頁、打印頁、篩選頁、測試目錄,這些是否确實不该被抓。
- 检查是否誤伤了 CSS、JS、图片等静態资源所在的路径,资源被挡住會影响頁面渲染判断。
- 確認規則里声明的站点地图地址是可訪問的绝對地址,且指向的内容是有效的。
- 翻一段時間的訪問日誌,看被挡的路径里有没有本该被抓的栏目頁或詳情頁。
- 把文件纳入版本管理或备份,避免誤删之後無處比對。
和其他机制的分工
- robots.txt:控制抓取范围,减少無效請求。
- noindex:控制是否進入索引,需要頁面被抓到才生效。
- 站点地图:主動告知有哪些地址值得抓,和 robots.txt 配合使用更顺。
- canonical:處理同一内容多個地址时的归並問题。
抓取频率方面,部分爬虫支持在文件里寫抓取間隔,但支持度有限,實际調速更多還是通過服務器响應速度、站点日誌观察和搜尋平台的相應設定来完成。
改動时的节奏
建议把 robots.txt 的修改和站点结构變動绑在一起:新增栏目、調整目錄、合並频道、上线新模板,都顺手看一遍。改動前一天记錄目前内容,改完先在小范围驗證,再观察一两周日誌,確認抓取量没有異常下滑。
規則文件越短越好,但每一條都要能说清楚為什么要寫。寫不清的那條,往往就是後来的麻烦。