站点运营

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

robots.txt 是蜘蛛訪問站点时最先讀取的文件之一,寫错一條規則,可能让整站或重要目錄無法被抓取。本文梳理 robots.txt 的常见誤配,包括屏蔽 CSS/JS、Disallow 與 noindex 叠加、通配符寫错、測試站規則誤上线等,並给出一份上线前可执行的自查清單,帮助站点减少不必要的抓取损耗。

站点运营

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

robots.txt 通常是蜘蛛進入站点後最先讀取的文件之一。它本身不复杂,但一旦寫错,影响面往往很大:轻則让某些资源抓不到,重則让整站目錄被挡在门外。很多站点在改版、換域名、上測試环境时顺手改過這個文件,過後却忘了恢复,問题就藏在這里。

先確認 robots.txt 本身能被正常讀取

检查規則之前,先確認文件本身没有問题。常见的错誤是路径放错、返回了 HTML 頁面,或者被重定向到首頁,導致蜘蛛根本讀不到規則。

  • 地址應為 https://example.com/robots.txt,不要放在子目錄里;
  • 返回狀態碼 200,内容類型為 text/plain;
  • 不要返回 HTML 頁面,也不要跳轉到無關地址;
  • 文件保持精简,規則按需添加,不要堆成一大段。

不要顺手屏蔽 CSS 與 JS

有些站点為了省抓取预算,在 robots.txt 里屏蔽 /css/、/js/、/assets/ 等目錄。蜘蛛抓取這些资源是為了渲染頁面,屏蔽之後可能只看到残缺的頁面结构,图片位置、文字内容和連結都可能判断错誤。除非你确定頁面不依赖這些资源,否則不建议屏蔽。

Disallow 與 noindex 不要叠加使用

想彻底不让某個 URL 出現在搜尋结果里,常见做法是加 noindex。但如果這個 URL 同时被 robots.txt 屏蔽,蜘蛛就讀不到 noindex 标簽,反而可能在没有摘要的情况下被收錄。两者的關系是:robots.txt 管“能不能抓”,noindex 管“能不能索引”。要先让蜘蛛能抓到,才能看到 noindex。

如果頁面确實不该被抓取,也不该出現在搜尋结果里,更稳妥的方式是先允许抓取、加 noindex,等確認索引移除後再考虑屏蔽。

通配符與路径寫法容易踩坑

路径匹配是 robots.txt 里最容易寫错的部分,几個常见問题值得逐條核對:

  • 寫成 /admin 會同时匹配 /admin、/admin/ 和 /administrator,范围可能超出预期;
  • 用 $ 结尾可以精确匹配,例如 /search$ 只挡 /search;
  • Allow 與 Disallow 同时命中时,一般以更具体、更長的規則為准,不要只靠直觉判断;
  • 通配符 * 要谨慎使用,避免一條規則誤伤大半個目錄。

測試环境、後台與搜尋頁要單獨處理

開發站、预發布站如果沿用了线上域名又没有訪問限制,容易被蜘蛛抓到重复内容。後台、搜尋结果頁、用戶中心這類頁面通常也不需要收錄。與其在 robots.txt 里寫一堆規則,不如结合訪問密碼、獨立的 robots meta 或服務器层面的限制,把“不能抓”和“不该收錄”分開處理。

上线前的 robots.txt 自查清單

  1. 確認线上 robots.txt 不含測試环境遗留的規則;
  2. 確認没有誤封 CSS、JS、图片目錄;
  3. 確認没有用 Disallow 屏蔽需要 noindex 的頁面;
  4. 检查通配符和 $ 结尾是否符合预期路径;
  5. 检查是否屏蔽了搜尋頁、分頁、篩選參數等低價值地址;
  6. 確認 Sitemap 地址寫在文件里且可正常訪問;
  7. 用抓取測試工具或不同 UA 驗證規則生效情况。

用抓取日誌驗證,而不是只看文件

改完 robots.txt 後,建议观察一段時間的抓取日誌,看看蜘蛛是否還在請求被屏蔽的目錄,或者重要目錄的抓取量是否明顯下降。如果發現異常,及时回滚。站点运营中,這類基础文件不需要频繁改動,但每次改動都值得记錄時間和原因,方便日後排查。

robots.txt 的價值在于放行正确的、拦住不需要的。定期花几分钟复查一遍,比等到抓取出問题再补救要轻松得多。