很多站点的收錄問题,最後追到的不是内容质量,而是根目錄下那個几百字节的 robots.txt。它被搜尋引擎抓取前最先讀取,一旦寫错,後面所有的栏目規划、内鏈布局、内容更新都很难被看到。這個文件平时没人動,動一次又容易留下坑,所以值得單獨做一次自查。
為什么它比其他配置文件更敏感
robots.txt 的作用是告诉爬虫哪些路径不用抓。它生效快、覆盖面广、出错时没有明顯报错提示——服務器照样返回 200,頁面照样能訪問,只是蜘蛛不再来。更麻烦的是,很多問题不是全站屏蔽,而是某個目錄被顺手挡住,比如静態资源目錄、搜尋頁目錄、带參數的列表頁,表面上看不出異常。
常见的高風險寫法
Disallow 范围寫得太宽
最典型的是 Disallow: / 留在线上环境。測試阶段為了不让站点被抓,加了全站禁止,上线後忘了删。另一個常见情况是 Disallow: /search 這類前缀寫法,本意只挡搜尋頁,结果把 /search-tips、/searches 一起挡掉。如果只想挡某一层,建议寫成带斜杠的明确路径。
屏蔽了 CSS、JS 和图片
為了节省抓取资源,把 /static/、/assets/、*.css、*.js 全挡掉,會让爬虫看到的頁面缺少样式與脚本判断依據,移動端适配和渲染類問题都难以被正确评估。图片目錄被挡,图片搜尋流量也随之消失。除非有明确理由,這類资源一般建议放開。
通配符和 Allow 顺序用混
不同的爬虫對通配符支持程度不完全一致,* 和 $ 用得越多,行為越难预测。同时 Allow 與 Disallow 同时存在时,規則匹配的優先級容易被誤判。稳妥做法是:能用明确路径就別用通配符,規則條目保持精简,改完一定用抓取測試工具驗證一遍。
Sitemap 指向失效地址
文件末尾的 Sitemap 声明指向了舊域名、測試域名或已经下线的目錄,等于给爬虫指了一條死路。改版、換域名、目錄迁移之後,這一行要跟着更新。
一次可执行的自查流程
- 用浏览器直接訪問 /robots.txt,確認返回 200 且内容是最新版本,不是缓存里的舊文件。
- 逐條讀規則,問一句“這條挡的是谁”,把每條規則對應的真實目錄在站点上打開驗證。
- 检查是否存在全站 Disallow、屏蔽静態资源、屏蔽整站图片目錄的情况。
- 確認 Sitemap 地址可訪問,且里面列出的地址都是希望被發現的正式地址。
- 用搜尋引擎官方提供的抓取測試工具或日誌观察,確認目标頁面能被正常抓取。
- 把這次確認的结果记錄到运维文档里,注明修改時間和修改人。
用抓取记錄做二次驗證
規則改完之後,光看文件本身不够。翻一翻近期的訪問日誌,看看目标栏目的抓取請求是否恢复、静態资源是否重新出現、是否還有大量請求打在已经被屏蔽的路径上。如果日誌里長時間没有某個目錄的抓取记錄,而该目錄又不在禁止列表里,問题可能出在別處,比如入口太深或者内部連結太少。
robots.txt 是抓取入口的開關,不是提升收錄的工具。它只负责“让不让来”,不负责“来不来、收了不收”。把它当成限制條件的清單来维護,比当成優化手段更合适。
和 URL 發現的關系
站点做蜘蛛池、做 URL 主動提交、做内鏈铺设,前提都是爬虫愿意進這個门。入口被封住,後面所有動作都只是自娱自乐。反過来说,規則寫得太松、把大量無意义的篩選參數頁和重复列表頁全部放開,也會稀释抓取资源的分配。合理的做法是:正式内容頁全部放開,纯參數组合頁、站内搜尋结果頁、後台與測試目錄明确挡掉,並在 Sitemap 里只列正式地址。
落地检查清單
- 线上 robots.txt 中没有全站 Disallow
- 關键栏目、文章、商品目錄均未被誤挡
- CSS、JS、图片目錄按需放開
- 測試域名、内测目錄、後台路径已屏蔽
- Sitemap 地址可訪問且與實际域名一致
- 規則條目精简,通配符使用有明确理由
- 修改後做過抓取測試並留存记錄
- 日誌中目标目錄的抓取請求處于正常水平
這個文件平时不需要频繁改動,但每隔一段時間,或者在做改版、迁移、栏目調整之後,都值得重新看一遍。它体量很小,出問题的代價却常常很大,属于投入产出比很高的一項例行自查。