搜索引擎的爬虫在抓取网站内容前,通常都会先查看根目录下的 robots.txt 文件。这个文本文件相当于一份“访问须知”,向爬虫声明网站哪些区域可以进入、哪些区域应当回避。写好这份文件,既能防止后台目录或隐私数据进入搜索结果,也能减少不必要的抓取请求,让爬虫把资源花在刀刃上。以下内容将从基础语法出发,逐步拆解不同场景下的配置写法。
robots.txt 必须存放在网站域名的根目录下,比如 www.example.com 对应的文件就是 www.example.com/robots.txt。文件中的每条规则默认由两部分构成:指定规则的爬虫对象,以及对应的允许或禁止路径。
常用的指令包括:
一个最常见的开放型配置示例如下:
User-agent: * Disallow: Sitemap: https://www.example.com/sitemap.xml这段声明表达的含义是:所有爬虫都可以抓取任意路径,同时站点地图的位置也一并告知。需要注意的是,指令对大小写敏感,例如“Disallow”写为“disallow”将不会生效。
面对不同的网站类型和运营需求,robots.txt 的写法也需要灵活调整。下面几个场景是日常工作中最常遇到的。
如果网站正处于开发中、准备改版,或者某些功能调整期间不希望被搜索收录,可以在文件中添加以下内容:
User-agent: * Disallow: /此配置会告知所有爬虫不要抓取任何路径。等网站完成调整后,记得及时删除或注释掉这些规则。
许多网站的敏感逻辑都集中在后台或用户管理模块,例如 /admin/、/user-center/。只想屏蔽这些区域时,可以这样编写:
User-agent: * Disallow: /admin/ Disallow: /user-center/这里有个容易踩坑的点:如果后续想对某个子路径单独开禁,比如允许抓取 /admin/public/,必须将 Allow 规则放在对应的 Disallow 之后。部分爬虫并不支持 Allow 指令,因此稳妥的折中方案是,仅用 Disallow 列出需要屏蔽的路径,其余目录默认保持开放状态。
某些资源目录可能担心国外的大型爬虫消耗过多带宽,但对国内几家主流的搜索引擎较为友好。这时可以分段落区分限制:
User-agent: Baiduspider Allow: / User-agent: * Disallow: /assets/ Disallow: /uploads/编写时必须把针对特定爬虫的规则置于文件靠前的位置,并在最后一行再写适用于所有爬虫的通用规则。爬虫会首先寻找与自己名称完全匹配的段落,匹配不到时才会去读取通用段落。
在维护 robots.txt 的过程中,以下细节常常被忽略,但带来的影响却不容小觑。
配置完成后不能草率了事,需要通过多种途径验证规则是否真正生效。Google Search Console 的 robots.txt 测试工具和百度搜索资源平台均提供了检查功能,能够模拟爬虫视角逐条解析你的声明。
此外,还要建立定期复查的意识。当网站做目录结构调整、新上线了 CDN 或改变了前后端架构后,都应当重新检查一遍文件中的路径是否仍然有效。一些网站还使用 CDN 层级部署 robots.txt,这时需要确认 CDN 节点是否同步了最新版本的规则文件,避免因缓存机制造成规则更新延迟。
不能。robots.txt 只是一种抓取层面的约定,并非安全屏障。如果页面上存在外部链接,搜索引擎仍有可能记录该页面的 URL 并显示在搜索结果中(仅不提供快照内容)。真正需要保密的数据应通过登录鉴权和 noindex 标签做双重保护。
两者作用不同。noindex 标签需要爬虫已经抓取并解析了页面内容后才能识别,这本身会消耗资源。robots.txt 则是在抓取发生之前就提前拦截,更适用于节省带宽和阻止后台程序逻辑被分析。对于不希望被访问的私密文件,用 Disallow 拦截更直接。
爬虫抓取 robots.txt 的频率远低于普通页面,通常存在至少数小时至一天的缓存周期。修改文件后不要频繁刷新查看效果,耐心等待缓存过期或通过搜索引擎站长后台的抓取诊断功能,手动触发一次规则更新即可。
掌握 robots.txt 的严谨写法,是网站技术运营的基本功。建议先在测试环境里完成规则调配,再在正式站点启用;同时为文件保留一个包含 Sitemap 声明的完整备份,方便日后快速恢复。每周花少量时间检查一次服务器日志中的爬虫请求状态,往往能提前发现因规则误配导致的流量异常。