站点运营

站点运营:robots.txt 规则自查,别让关键目录被自己挡在门外

robots.txt 是站点根目录里一个不起眼的小文件,却常常在关键时刻挡住爬虫的去路。本文梳理常见写法错误、逐条自查顺序、修改记录方式,以及它与站点地图、抓取效率之间的配合关系,帮你在规则层面少踩坑。

站点运营

站点运营:robots.txt 规则自查,别让关键目录被自己挡在门外

robots.txt 是站点根目录下一个纯文本文件,用来告诉爬虫哪些路径可以抓、哪些不要抓。它很小,却经常被忽略,直到某天发现某个栏目一个页面都没被访问过,回头一看才发现规则里把它挡住了。它管不了收录结果,但能决定爬虫有没有机会走到你的页面跟前。

robots.txt 能做什么,不能做什么

需要先分清边界。robots.txt 属于建议性协议,遵守它的爬虫会照做,不遵守的依然会访问;它也不能用来隐藏敏感内容,更不能替代 noindex。要禁止页面出现在搜索结果里,正确做法是页面本身的 meta robots 或响应头,而不是靠 robots.txt 挡掉——被 robots.txt 挡住的页面,爬虫读不到 noindex,反而可能因为外部链接而以裸地址形式出现。

常见问题自查清单

  • Disallow: / 误伤全站:多见于测试期写的规则,上线时忘了删,结果整站被挡在门外。
  • 挡掉了 CSS 和 JS:爬虫渲染页面需要这些资源,屏蔽之后对页面的理解会打折扣。
  • 顺手屏蔽了分页、标签页、筛选页:如果这些页面本身有流量价值,一刀切会让大量长尾地址失去被发现的机会。
  • 路径写法不严谨:规则区分大小写,也不支持随意通配,写得太宽会误伤旁边的目录。
  • 只写了 Disallow,没写 Sitemap:站点地图声明是给爬虫的入口提示,成本极低,值得补上。
  • 测试环境规则被复制到正式环境:或者反过来,正式规则被带进了测试站,两边互相干扰。
  • 多套规则互相冲突:允许与禁止叠加时,容易得出和预期完全不同的结果。

按顺序做一遍检查

  1. 直接在浏览器打开站点根目录下的 robots.txt,确认返回正常状态码,内容是最新的,而不是缓存里的旧版本。
  2. 逐条读 Disallow,问自己这条规则当初想挡什么,现在是否还需要挡。
  3. 用爬虫模拟工具分别以主流搜索引擎爬虫的身份请求几个关键页面,看返回的是允许还是被拦。
  4. 对照服务器访问日志,观察被挡目录是否真的没有爬虫访问,同时确认允许目录的访问是否正常。
  5. 确认站点地图地址可访问,并且里面的 URL 与 robots 规则之间没有矛盾。

修改时留个记录

规则改动叠加起来很容易失控。建议每次改动写清日期、改了什么、为什么改,并在改动后的一两周内回看日志,确认爬虫访问量没有异常下滑。发现挡错时立刻恢复,不要抱着再看几天的心态。

robots.txt 是一道门,不是一堵墙。它的作用是引导爬虫把时间花在值得的页面上,而不是把整个站点关起来。

和 URL 发现、抓取效率的关系

站点的抓取预算是有限的,robots.txt 里的规则会直接影响爬虫把时间用在哪里。把无意义的结果页、内部搜索页、重复参数页挡掉,往往比继续堆内容更能改善抓取效率。但前提是你清楚哪些页面确实没有价值,而不是图省事全挡。检查完 robots.txt 之后,建议再看看站点地图和站内链接,三者配合起来,URL 的发现路径才算完整。

最后提醒一句:robots.txt 只是基础配置,改对了不代表页面一定会被收录,它只负责让爬虫顺利走到门口。剩下的还取决于内容质量、站点结构和整体信任度,这几件事没有捷径可走。