站点运营

站点运营:robots.txt 自查,一行規則可能影响整站抓取

robots.txt 只有几行,却直接决定蜘蛛能不能正常抓取整站。本文按顺序梳理自查步骤:先確認文件可訪問,再逐條检查 Disallow 規則是否誤伤静態资源或整站,說明屏蔽與 noindex 的分工,並给出改版上线前後的检查清單和改動後的日誌观察方法。

站点运营

站点运营:robots.txt 自查,一行規則可能影响整站抓取

很多站点在改版、上測試环境或做临时限制时,會動到 robots.txt。這份文件只有几行,却直接决定蜘蛛能不能進来。改動前如果不做自查,很容易出現两種情况:一是把整站屏蔽了却没人發現,二是把 CSS、JS、图片一起封掉,蜘蛛拿到的是一個残缺頁面。

第一步:確認文件本身可訪問

先別急着看規則内容,先確認這份文件能被正常讀到。在浏览器里直接打開對應地址,观察它返回的是不是一個纯文本文件。如果服務器把未知路径统一跳轉到首頁,或者返回 200 却带着一整個 HTML 模板,蜘蛛讀到的東西和你以為的完全不同。

  • 返回碼是否正常,是否為 200;
  • 是否是纯文本,有没有混入 HTML 代碼;
  • 是否被 CDN 或防火墙拦截,導致蜘蛛拿到 403;
  • 是否存在多個版本,比如 http 與 https、带 www 與不带 www 各有一份且内容不一致。

第二步:逐條讀一遍 Disallow 規則

規則少的时候,人眼逐條讀最可靠。重点看有没有一條全局屏蔽忘了删,這類問题在改版、迁移、測試上线之後特別常见。

常见的誤封對象

  • 整站目錄,通常是測試期間寫的全局屏蔽;
  • 静態资源目錄,比如 /static/、/assets/、/js/,導致蜘蛛看到的頁面没有样式和交互;
  • 图片目錄或上传目錄,让正文里的图片無法被發現;
  • 栏目目錄本身,而不是只屏蔽其中的篩選參數;
  • 带通配符的規則,把带參數的正常頁面一起杀掉。

通配符和結束符要寫清楚

星号匹配任意字符,美元符号匹配结尾,两者组合时含义差別很大。寫規則时建议先在本地或用驗證工具確認匹配结果,別凭感觉。同一份文件里規則互相覆盖时,通常以更具体的那條為准,但這種依赖顺序的寫法越少越好维護。

第三步:想清楚屏蔽和 noindex 的区別

robots.txt 表達的是不要抓取,不等于不要收錄。被屏蔽的地址,蜘蛛看不到頁面上的 noindex,如果外部有連結指向它,仍有可能以一個没有描述的條目形式出現。所以:

  • 想让頁面完全不出現在结果里,應该让它可抓取,並在頁面上返回 noindex;
  • 想省抓取预算、不想让蜘蛛把時間花在無關地址上,才用 robots.txt 屏蔽;
  • 两者混用时要格外小心,尤其是只靠 robots.txt 屏蔽的頁面,往往處于一種模糊狀態。

第四步:別把 robots.txt 当保密工具

這份文件是公開的,任何人都能讀。把後台地址、内部接口、未上线的活動頁寫在 Disallow 里,等于對外公布了一份目錄。真正的敏感目錄應该靠登入鉴權、IP 限制或密碼保護来解决,而不是指望蜘蛛不去看。

上线與改版时的检查清單

  1. 測試环境用的全局屏蔽是否已经刪除;
  2. 静態资源、图片、字体目錄是否可抓取;
  3. 是否声明了站点地图,地址是否正确、可訪問;
  4. http 與 https、www 與非 www 版本内容是否一致;
  5. 改動後是否在日誌里连續观察几天蜘蛛抓取量的變化;
  6. 是否记錄了改動時間,方便出問题时回滚。
robots.txt 是门口的一張告示,不是门鎖。它的作用是告诉蜘蛛哪些地方不用去,而不是保護内容不被看到。

改完之後盯几天日誌

修改 robots.txt 後,抓取行為不會立刻變化,通常需要几天到几周才能看出趋势。建议對比改動前後的抓取量、被抓頁面的類型分布,確認没有出現整站抓取量骤降、或者只剩静態资源被抓這類異常。如果發現不對,第一時間回滚到上一版,而不是繼續叠加新規則去补救。

這份文件不大,但值得在每次上线、改版、迁移时都過一眼。把它固定成一個動作,比出事之後再回头找原因省事得多。