站点运营

站点运营:robots.txt 規則自查,別让一條寫错的規則挡住整站抓取

robots.txt 看起来只是一份简單的纯文本文件,寫错一條規則却可能挡住整站抓取,而且恢复起来不轻松。本文整理了文件可訪問性检查、常见誤寫規則、robots.txt 與 noindex 的区別,以及修改後的驗證和日誌观察步骤,适合放進上线前的检查清單。

站点运营

站点运营:robots.txt 規則自查,別让一條寫错的規則挡住整站抓取

robots.txt 是放在站点根目錄的一個纯文本文件,用来告诉爬虫哪些路径不希望被抓取。它看起来简單,但一次改错就可能让整站從搜尋结果里慢慢消失,而且恢复周期不短。把它当成上线前必查的一項配置,成本很低。

先確認文件能被正常訪問

爬虫只會讀取根目錄下的 /robots.txt,放在子目錄里或者带參數的地址都不算數。自查的第一步很简單:用浏览器直接訪問,確認返回 200,内容是纯文本,没有混進 HTML 标簽,也没有被 CDN 或安全策略拦成 403。如果返回 404,等于告诉爬虫“没有限制”,通常不算坏事,但如果之後想恢复限制,別忘了先把文件放回去。

最容易出事的几條規則

  • 全站屏蔽:Disallow: / 這一條會把整站挡在门外。測試环境上线、临时维護之後忘记删掉,是常见的事故来源。
  • 路径寫错:路径区分大小寫,/News/ 和 /news/ 是两條不同的路径。少寫一個斜杠、把 / 寫成 /*,實际效果可能完全不一样。
  • 顺手屏蔽静態资源:把 /css/、/js/、/images/ 一起挡掉,爬虫渲染頁面时拿不到样式和脚本,對理解頁面没有帮助。
  • 規則互相覆盖:同一目錄出現多條 Allow 與 Disallow 时,實际生效的往往是路径最長的那條,先後顺序不一定决定结果。

robots.txt 不等于 noindex

想隐藏一個頁面时,很多人的第一反應是寫進 robots.txt,但要分清两者的作用:robots.txt 决定“能不能抓”,noindex 决定“能不能收錄”。如果一個頁面既被 Disallow 又带 noindex,爬虫根本抓不到頁面,自然也看不到 noindex 标簽,结果往往變得难以预期。

如果目标是让頁面不出現在搜尋结果里,通常的做法是先允许抓取,再在頁面上加 noindex;robots.txt 更适合用来节省抓取资源,挡住後台、參數頁這類不需要抓取的地址。

自查时建议走的几步

  1. 確認文件位置、狀態碼和内容格式都正常。
  2. 逐條讀一遍 Disallow 與 Allow,看有没有能匹配到全站的規則。
  3. 用不同 UA 測試關键路径,確認重要頁面没有被意外拦住。
  4. 检查是否声明了 Sitemap 地址,且该地址可以正常訪問。
  5. 修改前先备份,修改後观察服務器日誌里爬虫的抓取量和狀態碼變化。

改完不要只看文件本身

robots.txt 的改動不會立刻在所有爬虫上生效,各家的缓存時間不一样,所以改完当天看不到變化是正常的。重点看接下来一到两周的日誌:目标頁面的抓取频次是否恢复,狀態碼是否從 403 變成 200。如果同时在用蜘蛛池或主動推送加快 URL 發現,也建议把被屏蔽的路径排除在外,避免把抓取机會送给一個爬虫根本不會訪問的地址。

把這一步加進上线检查清單,能避開一類恢复起来很慢的問题。