站点运营

站点运营:robots.txt 的規則與排查,別把该抓的目錄一起挡住

robots.txt 只控制抓取,不管索引與排名,但寫错一行就可能把栏目入口一起挡掉。本文整理它的位置要求、语法要点、通配符的坑,以及上线前可以走的驗證流程,並說明它和 sitemap、meta robots 之間的分工,帮你在收紧規則时少誤伤。

站点运营

站点运营:robots.txt 的規則與排查,別把该抓的目錄一起挡住

robots.txt 是放在站点根目錄的纯文本文件,用来告诉搜尋蜘蛛哪些路径不必抓取。它不控制索引,也不等于訪問權限控制,但一旦寫错,影响面往往很大:轻則让栏目頁長期不被發現,重則把整站挡在门外。

先確認文件位置與可訪問性

文件必须放在主机名根目錄下,协议、主机名要與站点主域名一致。如果站点還存在 www 與非 www 两套可訪問的地址,最好先做统一跳轉,而不是两邊各维護一份規則。

  • 放在子目錄里無效,例如 example.com/blog/robots.txt 不會被当作規則文件。
  • 返回 404 等于告诉蜘蛛没有規則,但保留一份空文件更利于後續管理。
  • 返回 200 但内容其實是 HTML 错誤頁时,容易被当成規則解析,出現莫名其妙的拦截。

语法要点:User-agent、Disallow、Allow

一组记錄從 User-agent 開始,後面跟若干條規則。User-agent: * 是兜底记錄,要注意它和具体蜘蛛记錄之間的取舍關系。空 Disallow 表示允许抓取,而 Disallow: / 表示全站禁止,這一行最容易誤伤,改站点结构时尤其要留意。

通配符與结尾符号

  • * 匹配任意長度的字符序列,可用于批量指向某類路径。
  • $ 匹配地址结尾,例如只挡以 .pdf 结尾的地址。
  • 路径区分大小寫,寫 /Images/ 不會挡到 /images/。
  • 它不支持正則表達式,复杂的匹配條件寫進去也不會按预期生效。

三條容易踩的线

一、用它挡篩選與排序參數

把參數頁挡在抓取之外,可以减少無效消耗,但已经被抓取過的地址仍可能留在索引里。想让它登出索引,還需要配合頁面上的 noindex 或返回 410,robots.txt 本身只负责停止抓取。

二、挡住 CSS 與 JS

样式和脚本被挡,蜘蛛渲染頁面的能力會受影响,對依赖前端渲染的站点尤其明顯。這類资源通常不建议拦。

三、誤挡栏目與分頁

把 /page/ 這類翻頁路径整体挡掉,可能让列表頁深處的條目失去一條發現通道。判断前先看這些内容是否還有栏目頁、相關推荐、站点地图等其他入口。

排查與驗證流程

  1. 在浏览器訪問 域名/robots.txt,確認狀態碼為 200、返回類型是文本。
  2. 用搜尋平台提供的測試工具,輸入具体 URL,看命中了哪一條規則。
  3. 抽查重要栏目、詳情頁、资源目錄,確認没有被誤挡。
  4. 结合服務器日誌,观察被挡目錄是否還有抓取請求,用真實資料判断規則是否生效。
  5. 每次修改留一條记錄,注明時間、修改人和原因,方便回溯。

與 sitemap、meta robots 的分工

robots.txt 管的是抓取,sitemap 负责提供入口,meta robots 與 X-Robots-Tag 管的是索引與展示。三者层次不同,不能互相替代。想阻止索引却只寫 Disallow,蜘蛛看不到頁面上的 noindex,反而可能因為外鏈而進入索引。

改動前先在測試环境驗證匹配结果;涉及全站規則时,建议先放行、再收紧,避免一次性大范围拦截。

维護习惯

把 robots.txt 纳入版本管理與上线检查清單,改版、迁移、上线新栏目时各检查一次。文件本身不需要频繁改動,動得越少,越不容易出問题。

寫 robots.txt 的目标不是挡得越多越安全,而是让抓取预算花在有用的頁面上。每次改動都想清楚一件事:這條規則挡住的是低质地址,還是會把栏目入口一並挡掉。