站点运营

站点运营:robots.txt 與抓取規則自查,別让一行 Disallow 挡住整站入口

robots.txt 是搜尋引擎抓取前會讀取的第一道規則文件,寫错一行就可能挡住整站或關键栏目。本文梳理常见的宽泛 Disallow、通配符誤用、屏蔽 CSS/JS、Sitemap 指向失效等問题,给出一套可执行的检查流程和落地清單,帮助站点把抓取入口理清楚。

站点运营

站点运营:robots.txt 與抓取規則自查,別让一行 Disallow 挡住整站入口

很多站点的收錄問题,最後追到的不是内容质量,而是根目錄下那個几百字节的 robots.txt。它被搜尋引擎抓取前最先讀取,一旦寫错,後面所有的栏目規划、内鏈布局、内容更新都很难被看到。這個文件平时没人動,動一次又容易留下坑,所以值得單獨做一次自查。

為什么它比其他配置文件更敏感

robots.txt 的作用是告诉爬虫哪些路径不用抓。它生效快、覆盖面广、出错时没有明顯报错提示——服務器照样返回 200,頁面照样能訪問,只是蜘蛛不再来。更麻烦的是,很多問题不是全站屏蔽,而是某個目錄被顺手挡住,比如静態资源目錄、搜尋頁目錄、带參數的列表頁,表面上看不出異常。

常见的高風險寫法

Disallow 范围寫得太宽

最典型的是 Disallow: / 留在线上环境。測試阶段為了不让站点被抓,加了全站禁止,上线後忘了删。另一個常见情况是 Disallow: /search 這類前缀寫法,本意只挡搜尋頁,结果把 /search-tips、/searches 一起挡掉。如果只想挡某一层,建议寫成带斜杠的明确路径。

屏蔽了 CSS、JS 和图片

為了节省抓取资源,把 /static/、/assets/、*.css、*.js 全挡掉,會让爬虫看到的頁面缺少样式與脚本判断依據,移動端适配和渲染類問题都难以被正确评估。图片目錄被挡,图片搜尋流量也随之消失。除非有明确理由,這類资源一般建议放開。

通配符和 Allow 顺序用混

不同的爬虫對通配符支持程度不完全一致,* 和 $ 用得越多,行為越难预测。同时 Allow 與 Disallow 同时存在时,規則匹配的優先級容易被誤判。稳妥做法是:能用明确路径就別用通配符,規則條目保持精简,改完一定用抓取測試工具驗證一遍。

Sitemap 指向失效地址

文件末尾的 Sitemap 声明指向了舊域名、測試域名或已经下线的目錄,等于给爬虫指了一條死路。改版、換域名、目錄迁移之後,這一行要跟着更新。

一次可执行的自查流程

  1. 用浏览器直接訪問 /robots.txt,確認返回 200 且内容是最新版本,不是缓存里的舊文件。
  2. 逐條讀規則,問一句“這條挡的是谁”,把每條規則對應的真實目錄在站点上打開驗證。
  3. 检查是否存在全站 Disallow、屏蔽静態资源、屏蔽整站图片目錄的情况。
  4. 確認 Sitemap 地址可訪問,且里面列出的地址都是希望被發現的正式地址。
  5. 用搜尋引擎官方提供的抓取測試工具或日誌观察,確認目标頁面能被正常抓取。
  6. 把這次確認的结果记錄到运维文档里,注明修改時間和修改人。

用抓取记錄做二次驗證

規則改完之後,光看文件本身不够。翻一翻近期的訪問日誌,看看目标栏目的抓取請求是否恢复、静態资源是否重新出現、是否還有大量請求打在已经被屏蔽的路径上。如果日誌里長時間没有某個目錄的抓取记錄,而该目錄又不在禁止列表里,問题可能出在別處,比如入口太深或者内部連結太少。

robots.txt 是抓取入口的開關,不是提升收錄的工具。它只负责“让不让来”,不负责“来不来、收了不收”。把它当成限制條件的清單来维護,比当成優化手段更合适。

和 URL 發現的關系

站点做蜘蛛池、做 URL 主動提交、做内鏈铺设,前提都是爬虫愿意進這個门。入口被封住,後面所有動作都只是自娱自乐。反過来说,規則寫得太松、把大量無意义的篩選參數頁和重复列表頁全部放開,也會稀释抓取资源的分配。合理的做法是:正式内容頁全部放開,纯參數组合頁、站内搜尋结果頁、後台與測試目錄明确挡掉,並在 Sitemap 里只列正式地址。

落地检查清單

  • 线上 robots.txt 中没有全站 Disallow
  • 關键栏目、文章、商品目錄均未被誤挡
  • CSS、JS、图片目錄按需放開
  • 測試域名、内测目錄、後台路径已屏蔽
  • Sitemap 地址可訪問且與實际域名一致
  • 規則條目精简,通配符使用有明确理由
  • 修改後做過抓取測試並留存记錄
  • 日誌中目标目錄的抓取請求處于正常水平

這個文件平时不需要频繁改動,但每隔一段時間,或者在做改版、迁移、栏目調整之後,都值得重新看一遍。它体量很小,出問题的代價却常常很大,属于投入产出比很高的一項例行自查。