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/ 這類翻頁路径整体挡掉,可能让列表頁深處的條目失去一條發現通道。判断前先看這些内容是否還有栏目頁、相關推荐、站点地图等其他入口。
排查與驗證流程
- 在浏览器訪問 域名/robots.txt,確認狀態碼為 200、返回類型是文本。
- 用搜尋平台提供的測試工具,輸入具体 URL,看命中了哪一條規則。
- 抽查重要栏目、詳情頁、资源目錄,確認没有被誤挡。
- 结合服務器日誌,观察被挡目錄是否還有抓取請求,用真實資料判断規則是否生效。
- 每次修改留一條记錄,注明時間、修改人和原因,方便回溯。
與 sitemap、meta robots 的分工
robots.txt 管的是抓取,sitemap 负责提供入口,meta robots 與 X-Robots-Tag 管的是索引與展示。三者层次不同,不能互相替代。想阻止索引却只寫 Disallow,蜘蛛看不到頁面上的 noindex,反而可能因為外鏈而進入索引。
改動前先在測試环境驗證匹配结果;涉及全站規則时,建议先放行、再收紧,避免一次性大范围拦截。
维護习惯
把 robots.txt 纳入版本管理與上线检查清單,改版、迁移、上线新栏目时各检查一次。文件本身不需要频繁改動,動得越少,越不容易出問题。
寫 robots.txt 的目标不是挡得越多越安全,而是让抓取预算花在有用的頁面上。每次改動都想清楚一件事:這條規則挡住的是低质地址,還是會把栏目入口一並挡掉。