robots.txt 是放在站点根目錄下的一個纯文本文件,用来告诉爬虫哪些路径可以抓、哪些不要抓。它的语法很简單,但正因為简單,很多站点在改版、換域名、上线測試环境之後忘了同步更新,结果一行 Disallow 就把整站的抓取通道堵住了。下面梳理一份可以照着走的自查清單,帮你在站点运营中把這份文件真正管起来。
先弄清楚它能做什么、不能做什么
robots.txt 是约定,不是强制。遵守协议的搜尋引擎爬虫會讀取它,但不保證所有抓取程序都照做,它也不能替代權限控制。不要用它来隐藏後台、用戶資料或接口地址,真正需要保護的内容應该用登入校驗、IP 限制或服務端鉴權。
另外,它只影响抓取,不直接等于不收錄。被屏蔽的 URL 仍然可能因為外部連結被索引,只是爬虫看不到頁面内容。如果目标是让某個頁面彻底從索引中消失,正确做法是允许抓取、在頁面上加 noindex,而不是简單 Disallow。
逐項自查清單
1. 是否誤封了整站
- 检查是否残留 Disallow: / 或 Disallow: /* 這類全站屏蔽規則。
- 確認 User-agent 分组没有寫错,比如把正式爬虫的規則誤寫進了測試 UA 分组。
- 检查是否同时存在多份 robots.txt,例如 http 與 https、带 www 與不带 www 各有一份,内容還不一致。
2. 是否挡住了样式與脚本
早期不少站点為了省抓取预算,會把 /css/、/js/ 目錄屏蔽掉。現在主流爬虫需要渲染頁面来判断内容质量,如果样式和脚本抓不到,它看到的很可能是一個近乎空白的頁面。除非确有性能压力,一般建议放開這些静態资源目錄。
3. 通配符與结尾符的寫法
- * 匹配任意字符,例如 Disallow: /*?sort= 可以挡住排序參數产生的组合地址。
- $ 匹配结尾,例如 Disallow: /*.pdf$ 只挡 PDF 文件。
- 通配符寫得太宽容易誤伤,比如 Disallow: /*print 會连带挡住正常路径中含 print 的頁面。
4. Sitemap 是否声明
在文件末尾寫上 Sitemap: 並指向站点地图的完整地址,可以帮助爬虫更快找到入口。這里要用绝對 URL,且协议與域名建议和目前站点保持一致。
5. 路径大小寫與目錄层級
robots.txt 的路径匹配区分大小寫,/Admin/ 和 /admin/ 是两條不同的規則。如果站内 URL 本身大小寫混用,規則很容易漏網。建议在服務器层面统一為小寫,從源头减少這類歧义。
6. 多域名與 CDN 场景
如果站点同时存在多個可訪問域名,例如带 www 與不带 www、多語言子域、CDN 回源域名,那么每個域名根目錄下都應当有一份一致的文件。曾经出現過主站規則正常,但舊域名仍然完全開放的情况,结果重复地址被大量發現和抓取。迁移或換绑之後,记得回头检查舊地址。
怎么驗證規則是否生效
- 直接訪問域名根目錄下的 robots.txt,確認返回狀態正常且内容是最新版本,而不是缓存的舊文件。
- 使用搜尋引擎站長平台提供的 robots 測試工具,輸入具体 URL,看判定结果是允许還是屏蔽。
- 观察服務器日誌里爬虫的抓取路径分布。如果样式、脚本或整個栏目区突然消失,先回头看這份文件。
- 把它纳入版本管理和發布流程,改版、迁移、上新环境时同步检查一遍。
和 URL 發現的關系
蜘蛛池、外鏈、站点地图這些手段解决的是“入口從哪来”,robots.txt 解决的是“入口進来之後走不走得通”。如果通道本身是堵的,再增加入口也不會带来有效抓取。對运营来说,這两件事最好放在同一張检查表里:先保證路径通畅,再考虑扩大入口。
一個成本很低的习惯:每次站点结构或域名有變動,第一件事就是打開 robots.txt 看一遍。它挡掉的多半是低級事故,但這類事故往往最难排查。
小结
robots.txt 不需要什么高深技巧,需要的是稳定的维護习惯。把它当成站点配置的一部分,跟着發布流程走,定期复核屏蔽規則、静態资源、Sitemap 声明與域名一致性,就能避開大部分“整站抓不到”的坑。