站点运营

站点运营:robots.txt 規則自查,別让一行 Disallow 挡住整站抓取

robots.txt 语法简單,却最容易在改版、迁移、上新环境时被遗忘。本文给出一份可执行的自查清單,從全站誤封、静態资源、通配符寫法、Sitemap 声明到多域名一致性逐項检查,並說明如何驗證規則是否生效,帮站点运营者把這份基础文件纳入日常维護流程。

站点运营

站点运营:robots.txt 規則自查,別让一行 Disallow 挡住整站抓取

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 回源域名,那么每個域名根目錄下都應当有一份一致的文件。曾经出現過主站規則正常,但舊域名仍然完全開放的情况,结果重复地址被大量發現和抓取。迁移或換绑之後,记得回头检查舊地址。

怎么驗證規則是否生效

  1. 直接訪問域名根目錄下的 robots.txt,確認返回狀態正常且内容是最新版本,而不是缓存的舊文件。
  2. 使用搜尋引擎站長平台提供的 robots 測試工具,輸入具体 URL,看判定结果是允许還是屏蔽。
  3. 观察服務器日誌里爬虫的抓取路径分布。如果样式、脚本或整個栏目区突然消失,先回头看這份文件。
  4. 把它纳入版本管理和發布流程,改版、迁移、上新环境时同步检查一遍。

和 URL 發現的關系

蜘蛛池、外鏈、站点地图這些手段解决的是“入口從哪来”,robots.txt 解决的是“入口進来之後走不走得通”。如果通道本身是堵的,再增加入口也不會带来有效抓取。對运营来说,這两件事最好放在同一張检查表里:先保證路径通畅,再考虑扩大入口。

一個成本很低的习惯:每次站点结构或域名有變動,第一件事就是打開 robots.txt 看一遍。它挡掉的多半是低級事故,但這類事故往往最难排查。

小结

robots.txt 不需要什么高深技巧,需要的是稳定的维護习惯。把它当成站点配置的一部分,跟着發布流程走,定期复核屏蔽規則、静態资源、Sitemap 声明與域名一致性,就能避開大部分“整站抓不到”的坑。