站点运营

站点运营:robots.txt 與 meta robots 自查,別让该抓的頁面被挡在门外

robots.txt 只有几行,却能决定蜘蛛能抓到什么。本文從文件可訪問性、语法寫法、渲染资源放行、與 meta robots 的分工、站点地图一致性、測試环境隔离几個角度,整理一份可执行的自查步骤,帮你避免该被發現的頁面被誤挡、该屏蔽的頁面被放進来。

站点运营

站点运营:robots.txt 與 meta robots 自查,別让该抓的頁面被挡在门外

為什么 robots.txt 值得單獨检查一遍

robots.txt 是放在站点根目錄的一個纯文本文件,搜尋引擎蜘蛛在抓取前會先讀取它。規則本身很简單,但一旦寫错,影响范围往往是整站級別的:要么该被發現的頁面被挡住,要么本该屏蔽的測試頁面被放進来。它不像頁面内容那样每天有人看,改完之後很容易被遗忘,所以更适合放進固定的检查清單里。

第一步:確認文件本身能被正常訪問

  • 用浏览器或命令行工具打開 https://你的域名/robots.txt,確認返回 200,而不是 404 或 500。
  • 確認返回的是纯文本,没有被 CDN 或 WAF 拦截成驗證頁、登入頁。
  • 如果站点有 www 和非 www、http 和 https 多個入口,每個入口最好都能讀到同一份規則。
如果 robots.txt 返回 5xx,蜘蛛通常會把整站视為暂时不可抓取;如果返回 404,則等同于没有限制。两種结果的差別很大,別靠猜。

语法自查:几個容易寫错的点

  • User-agent 與 Disallow 的配對:每一组規則以 User-agent 開头,後面的 Disallow、Allow 都属于它這一组,中間不要插入空行,否則會被当成新的一组。
  • 路径前缀匹配:Disallow 後面跟的是路径而不是完整網址,寫成 https://example.com/admin 是無效的,應该寫成 /admin。
  • 通配符的含义:星号匹配任意字符,美元符号表示结尾。比如 /search 會连带挡住 /search-result,而 /search$ 只匹配這一條路径。
  • 大小寫敏感:路径部分区分大小寫,/Admin 和 /admin 是两條不同的規則。
  • Sitemap 指令:可以在這里声明站点地图地址,注意寫完整的绝對地址,而不是相對路径。

別把渲染需要的资源一起挡住

有些站点為了节省抓取配額,會一口气屏蔽 js、css 和图片目錄。结果是蜘蛛拿到一個没有样式、没有内容的空壳,頁面能被抓取,但很难被正确理解。更稳妥的做法是:只屏蔽确實不需要被抓的目錄,把渲染必需的静態资源放開;如果某個具体资源不想被抓,再單獨處理那一條路径,而不是砍掉整個目錄。

robots.txt 與 meta robots 的分工

這两者经常被混用,但作用並不相同:robots.txt 控制的是“能不能抓”,meta robots 标簽或响應头里的 X-Robots-Tag 控制的是“抓到了能不能收錄”。

  • 如果某個頁面被 robots.txt 挡住,蜘蛛就不會去讀它頁面里的 noindex,頁面仍可能以無描述的形式出現在结果里。
  • 想彻底從索引中移除,應该让頁面保持可被抓取,同时在頁面层級返回 noindex;確認移除生效後,再考虑是否收紧抓取。
  • 批量下线的栏目、活動頁、參數頁,适合用 noindex 逐個處理,而不是一條 Disallow 全砍。

和站点地图、目錄结构保持一致

站点地图里提交的地址,不應该同时出現在 Disallow 列表里,這種自相矛盾會让抓取信号變得混乱。每次調整栏目或改版 URL 之後,把 robots.txt、站点地图、内鏈規則放在一起過一遍,看看有没有已经废弃的路径還留在文件里。

測試环境與线上环境分開處理

  • 測試站、预發布域名建议整体禁止抓取,避免半成品頁面被收錄。
  • 這條規則寫在測試站自己的 robots.txt 里,而不是靠“反正没人知道這個域名”。
  • 上线前再確認一次:生产环境的 robots.txt 没有被測試配置覆盖掉。

把它放進發布检查清單

  1. 改完 robots.txt 後,用搜尋引擎提供的 robots.txt 測試工具或 URL 检查工具,驗證一條具体路径是否符合预期。
  2. 在服務器上保留一份變更记錄,寫明改動内容、原因和日期。
  3. 每隔一段時間抽查:随机挑几個重要栏目地址,確認它們没有被誤屏蔽。

robots.txt 只有几行,却直接决定了蜘蛛能看到什么。把它当作一份需要長期维護的配置文件,而不是一次寫完就再也不用碰的東西,站点运营會少很多莫名其妙的“抓不到”問题。