站点运营

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

robots.txt 出错时頁面照常打開,用戶毫無感知,但蜘蛛的抓取范围可能已经改變。本文提供一份可执行的例行自查思路:確認文件位置與可訪問性,排查全站誤封、路径過宽、静態资源被挡等常见問题,用清單逐項核對,並說明改動後的驗證與回滚方式,最後提醒它與 sitemap、站内連結保持一致。

站点运营

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

robots.txt 是站点上最容易寫错、又最难立刻發現的文件之一。它不參與頁面渲染,出問题时頁面照样能打開,用戶毫無感觉,但蜘蛛可能已经按你的規則停止抓取某個目錄,甚至整站。尤其是接手他人站点、或者刚做完目錄調整之後,建议把這個文件排進例行自查。

一、確認文件位置與可訪問性

robots.txt 只對根域生效,必须放在站点根目錄,例如 https://example.com/robots.txt。放在子目錄里(如 /blog/robots.txt)不會被当作規則文件讀取。用浏览器或命令行直接訪問一次,確認返回 200,内容類型是纯文本,而不是被框架路由接管後返回首頁 HTML,也不是被安全策略拦截成 403。

如果站点有多個域名、多個环境(正式、预發、測試),要逐一確認:预發环境通常整体禁止抓取,正式环境才放開。把這條当成固定检查項,可以避免測試規則随手發布到线上。

二、常见的誤寫與風險

  • 整站誤封:Disallow: / 没有被注释掉,也没有做环境判断,直接留在了线上。
  • 路径寫得太宽:想挡 /search,结果寫成 Disallow: /s,顺带把 /service、/shop 等目錄一起挡住了。
  • 挡住静態资源:屏蔽 CSS、JS、图片目錄,蜘蛛拿不到渲染所需资源,對頁面内容的判断會受影响。
  • 規則分散冲突:同一個 User-agent 分成多段,或在多個位置各寫一份,维護时只改了其中一處。
  • 把 robots.txt 当權限工具:它只能表達“不希望被抓取”,不能阻止訪問,敏感内容應靠登入與鉴權處理。

三、逐項自查清單

  1. 訪問根目錄 robots.txt,確認狀態碼與内容正确,没有落到 CDN 上的舊版本。
  2. 检查是否存在 Disallow: / 或等價的全站禁止規則,已注释的除外。
  3. 逐條讀 Disallow 路径,確認没有意外覆盖正常栏目目錄。
  4. 確認 CSS、JS、字体、图片等资源目錄未被整体屏蔽。
  5. 同一 User-agent 的規則是否集中在同一段,是否存在重复段落。
  6. Sitemap 指令指向的地址可訪問,且與目前 sitemap 版本一致。
  7. User-agent 名稱拼寫與大小寫正确,寫错的名字不會命中任何蜘蛛。
  8. 如果設定了 Crawl-delay,確認數值合理,過大會明顯拖慢抓取节奏。

四、改動流程與驗證

robots.txt 的改動影响面大,建议走和代碼一样的流程:改動前记錄目前版本,改動後先在预發或小范围环境驗證,再發布上线。發布後观察几天訪問日誌,看目标蜘蛛的抓取频次與路径是否朝预期方向變化;如果某個栏目抓取量骤降,先回滚再排查原因。

robots.txt 是建议,不是闸门。它影响蜘蛛“愿不愿意”抓,而不是“能不能”抓。真正需要保護的内容,請用登入、權限與服務器层規則處理。

五、與其他配置保持一致

robots.txt、sitemap、canonical、站内連結共同决定了蜘蛛看到的站点范围。如果 sitemap 里提交了某個目錄,而 robots.txt 又把它挡住,两邊就互相矛盾;同理,栏目下线後除了加規則,也要把 sitemap 中的地址同步清理。定期把這几份配置放在一起對照一遍,比單獨检查某一個文件更容易發現不一致。