站点运营

站点运营:robots.txt 自查,別把该抓的頁面一起挡在外面

robots.txt 只有几行,却直接决定蜘蛛能碰到哪些頁面。本文梳理 robots.txt 的定位、逐條自查要点、常见的三類誤伤,以及上线後如何驗證規則是否生效,帮助站点把该挡的挡清楚、该放的別誤伤。

站点运营

站点运营:robots.txt 自查,別把该抓的頁面一起挡在外面

robots.txt 是站点里成本最低、也最容易寫错的一個文件。它往往只有几行,却直接决定蜘蛛能不能碰到你的頁面。很多人把它当成临时開關,随手 Disallow 一下,過几天忘了删,结果整站或某個重要栏目長期抓不到,等到检查收錄时才回头找原因。

先把它的定位说清楚

robots.txt 管的是“抓取”,不是“索引”。两個概念混在一起,規則就容易寫反。

想让頁面彻底不出現在结果里,應该用 noindex 並允许抓取;反過来,被 Disallow 的頁面蜘蛛讀不到 noindex,那條指令等于白寫。用 robots.txt 去“刪除”内容,通常只會得到一條没有摘要的结果。

逐條自查清單

  1. 位置與狀態碼:文件只能放在域名根目錄下的 /robots.txt,正常返回 200。返回 404 一般會被当作“全站可抓”,返回 5xx 則可能被理解為“暂时全站不可抓”,两種情况都會带来意外。
  2. 通配符與结尾符:* 匹配任意字符,$ 表示路径结尾。寫 /search 會连带挡掉 /search-help,寫成 /search$ 才只挡這一條路径。
  3. 路径大小寫:規則匹配通常区分大小寫,別預設小寫路径就能覆盖全部變体。
  4. 分组结构:User-agent 與其下的規則是一组,组内不要随意插空行,避免把規則拆到別的组里去。
  5. Sitemap 指令:把地图地址寫進文件,方便蜘蛛顺着發現 URL,與站内連結形成互相补充。
  6. 分环境處理:測試站、预發站優先用登入鉴權或 noindex 来處理,不要指望 robots.txt 挡住整站;一旦被外部連結引用,問题照样會漏出去。

三類常见誤伤

把 CSS 和 JS 一起挡掉

渲染頁面需要拿到样式和脚本资源,這些目錄一旦被屏蔽,蜘蛛看到的頁面结构可能變形,對正文的判断也會受影响。

用目錄級規則做批量清理

Disallow: /tag/ 這類目錄屏蔽寫起来很快,但目錄里常常混着有流量的聚合頁。建议先看日誌里這些 URL 的抓取频次和落地表現,再决定是整块屏蔽還是逐條處理。

規則長期不清理

临时上线的活動目錄半年後早已下线,屏蔽規則還留着;新栏目恰好复用了同一個路径前缀,于是上线当天就抓不到。改版、下线栏目时顺手過一遍 robots.txt,成本很低。

改完怎么驗證

  • 用浏览器或命令行直接訪問 /robots.txt,確認内容與狀態碼符合预期;
  • 用搜尋平台的 robots 測試工具對具体 URL 做一次判断,看结果是允许還是被規則挡住;
  • 對照服務端日誌,观察被挡目錄下是否還有抓取請求,若仍有請求,說明規則寫法或缓存有問题;
  • 记錄每次修改的時間和原因,避免下次没人说得清哪條規則是谁加的。

小结

robots.txt 的语法並不复杂,难点在于它容易被当成一次性操作。更稳妥的做法是把它当作配置文件来维護:寫清楚、测一遍、定期复查。蜘蛛的抓取预算有限,規則寫對,该抓的頁面才不會被誤伤。