robots.txt 通常只有几行,寫完就被遗忘在根目錄。但它是蜘蛛進入站点前最先讀到的文件之一,一條寫错的規則,可能让整站或某個栏目長期没有抓取。這篇属于站点运营里的基础自查,重点是把“能抓什么、不能抓什么”這件事定期核對一遍。
先明确 robots.txt 的邊界
把它的定位搞清楚,很多誤用會自然消失。
- 它是建议,不是防火墙。是否遵守取决于爬虫本身,恶意抓取也不會因為一行 Disallow 就停下。
- 阻止抓取不等于阻止收錄。被 Disallow 的 URL 仍可能因為外鏈被收錄,只是缺少标题和摘要。
- 它不适合用来保護隐私或隐藏内容,真正的權限控制要靠登入態和服務器配置。
- 它也不能替代 noindex。要阻止收錄,優先用 noindex,並且保證頁面能被抓取到。
正文自查:常被寫错的地方
1. 規則是否誤伤整站
Disallow: / 會挡住全站。這條規則在測試站、临时维護頁上很常见,一旦随模板或配置同步到正式环境,影响是直接的。自查时先確認這份文件属于哪個环境,再看它挡住了什么。
2. 路径寫法
- 路径区分大小寫,/Images/ 和 /images/ 不是一回事。
- 结尾漏寫斜杠,可能匹配到不该挡的目錄。
- 通配符 * 與结尾的 $ 會放大匹配范围,加之前先確認影响面。
- 多個 User-agent 段落並存时,確認目标爬虫落在哪一段,別把規則寫進了別的段落。
3. 是否挡住了渲染资源
把 CSS、JS、图片目錄一起挡掉,看起来省抓取,實际會让蜘蛛無法正确渲染頁面,判断頁面内容时容易出错。除非确有需要,通常建议放開這些静態资源。
4. Sitemap 声明
文件末尾的 Sitemap 行指向正确地址、可正常訪問,是常規做法。地址寫错或指向舊域名,等于白寫。多語言、移動端声明也應對照實际配置检查。
5. meta robots 與 X-Robots-Tag 要一起看
HTML 里的 meta robots 和响應头里的 X-Robots-Tag 是两套獨立設定,容易出現互相打架的情况。常见問题是:robots.txt 挡住了抓取,頁面里又寫着 noindex,结果 noindex 讀不到,頁面反而可能以空标题形式出現在结果里。要下线頁面,就让頁面可抓取 + noindex,等確認移除後再考虑屏蔽抓取。
一份可以照着走的检查步骤
- 直接訪問站点根目錄的 /robots.txt,確認返回正常狀態,不是 404,也不是被前端路由接管的 HTML 頁面。
- 用搜尋引擎官方提供的 robots 測試工具,輸入几個關键 URL,逐個看判定结果。
- 分別測試首頁、栏目頁、詳情頁、静態资源、後台路径,確認该放行的放行、该拦的拦住。
- 检查是否有子目錄、測試域名、CDN 节点上残留的另一份 robots.txt。
- 確認文件能正常返回後,再顺手检查 Sitemap 地址是否與實际一致。
- 修改後在日誌里观察一段時間抓取量變化,確認没有出現断崖式下跌。
改動與回滚
robots.txt 常被 CDN 或缓存层缓存,改完不生效时先想到刷新缓存,而不是反复改文件。另外建议把每次修改留档,改错时能立刻恢复上一版——這個文件改動量小,但影响面大,值得用對待配置文件的谨慎程度来處理。
一個习惯:任何涉及“阻止抓取”的改動,先在測試域名驗證,再上线,上线後隔天回看一次抓取日誌。
定期检查的节奏
不必频繁修改,但可以固定一個周期,比如每季度或每次大改版前後,把 robots.txt、meta robots、Sitemap 声明放在一起過一遍。規則稳定、邊界清楚,蜘蛛的抓取才會更容易落在你真正希望被看到的頁面上。