站点运营

站点运营:robots.txt 自查,別让一條規則把蜘蛛挡在门外

robots.txt 只有几十行,却常常成為爬虫抓取的第一道意外门槛。本文整理了全站屏蔽残留、路径寫错、誤挡静態资源、測試規則带上线、條目冲突、Sitemap 声明失效等常见問题,並给出一份可照着過的检查清單,帮助站点运营者在改版和迁站时少踩坑。

站点运营

站点运营:robots.txt 自查,別让一條規則把蜘蛛挡在门外

先弄清楚 robots.txt 在管什么

robots.txt 放在域名根目錄,是爬虫訪問站点时較早讀取的文件之一。它不保證頁面一定不被收錄,但能表達“哪些目錄不希望被抓取”的意图。很多站点出問题,不是因為没有這個文件,而是里面躺着一條早已被遗忘、却一直在生效的規則。

几個高频排查項

1. 是否出現過 Disallow: /

這是最常见的事故来源。測試阶段為了“先別被收錄”,在根目錄寫了全站屏蔽,上线後忘了删。结果就是蜘蛛来了、讀了規則、离開了,頁面在搜尋结果里長期没有動静。检查时直接在文件中搜尋這一條,出現就說明有問题。

2. 規則路径是否寫對

robots.txt 的路径匹配從域名根開始。想屏蔽 /search/ 却寫成 search/,或者填了带域名和协议的完整地址,通常都不會按预期生效。另外要注意 Disallow 是前缀匹配,寫 /admin 會把 /administrator-guide 這類頁面一起挡住。

3. 是否挡住了 CSS、JS 和图片目錄

搜尋引擎需要渲染頁面来判断内容质量。如果為了“省抓取”把 /static/、/assets/、/js/ 整体屏蔽,渲染结果可能是一片空白,反而影响判断。除非确實存在大量重复资源,否則不建议整体屏蔽静態资源目錄。

4. 測試环境的規則有没有带上线

预發布、灰度环境的 robots.txt 往往寫着全站 Disallow。如果部署流程是把整套文件同步到生产环境,這條規則就會跟着一起上线,而且很难第一時間被發現。

5. 多條規則是否互相冲突

站点由不同人维護时,robots.txt 里容易出現重复的 User-agent 段落,同一個目錄一會儿 Allow、一會儿 Disallow。不同爬虫對冲突條目的處理並不完全一致,建议保持一份简洁、清晰的規則。

6. Sitemap 声明指向哪里

可以在 robots.txt 中声明 Sitemap 地址。要確認這個地址能正常打開、返回的是 XML,並且里面列的是目前可訪問的地址,而不是改版前遗留下来的老域名或舊路径。

一份可以照着過的检查清單

  • 用浏览器直接訪問 /robots.txt,確認返回 200,而不是 404 或跳轉。
  • 全文搜尋 Disallow: /,確認没有全站屏蔽的残留。
  • 逐條對照目錄清單,检查路径是否寫错、是否存在拼寫問题。
  • 確認没有屏蔽 CSS、JS、图片等渲染必需资源。
  • 確認 Allow 與 Disallow 之間没有互相打架的條目。
  • 確認 Sitemap 声明的地址可訪問,内容與目前站点一致。
  • 用搜尋平台提供的抓取測試工具,驗證几條關键 URL 的判定结果。

几個容易踩的坑

把 robots.txt 当成隐私工具。它只是一份约定,並不能阻止任何人直接訪問。真正的私密内容應当依靠權限控制,而不是靠一條 Disallow。

用它来“清理”已经收錄的頁面。被屏蔽的地址如果此前已经被收錄,通常仍會留在索引里。想让頁面登出索引,應改用 noindex 或返回合适的狀態碼。

robots.txt 更像一份门牌說明,而不是一把鎖。把它寫清楚,蜘蛛才知道哪些门该進、哪些不必進。

建议把它纳入上线检查項:改版、迁站、調整目錄结构时都顺手過一遍。文件只有几十行,但改動一次的影响范围往往覆盖全站。