Robots.txt 是一个放在网站根目录下的纯文本文件,其主要职责是与搜索引擎爬虫进行沟通,告知哪些页面应当被抓取,哪些页面需要回避。需要明确的是,它是一份行业协约而非强制性防火墙,合理部署能够引导爬虫聚焦于核心内容,同时有效降低服务器资源的无谓消耗。
当搜索引擎的蜘蛛程序准备抓取你的站点时,它的首要动作是发起一个针对 /robots.txt 的请求。只要文件存在,并且该爬虫遵循协议标准,它就会依据文件内声明的规则来规划本次抓取的边界。反之,如果文件不存在,那么默认情况下爬虫有权抓取所有允许公开访问的链接。
在实际操作中,该文件常被用来实现以下目的:禁止抓取后台管理入口、过滤掉标签聚合页或站内搜索结果页等低质量重复内容、以及通过降低抓取频率来节省带宽成本。不过需要特别强调的是,这句忠告必须记住:合规的搜索引擎会尊重该协议,但一些恶意的数据采集程序并不理会这些规则,所以切勿把它当作网站的安全防线,任何敏感数据都应依靠权限验证来保护。
该文件的逻辑结构由多个记录块组成,每个记录块都以一个 User-agent 声明作为起始行,其后跟随若干具体的操作指令。掌握以下五个最基础的指令是配置工作的前提:
参照下面的写法,可以让你对规则一目了然,也利于日后维护更新:
User-agent: *
Disallow: /tmp/
Disallow: /private/
Allow: /private/special.html
Sitemap: https://www.example.com/sitemap.xml
这条规则带来的实际效果为:所有搜索引擎的爬虫都无法访问 tmp 和 private 这两个目录,但 private 目录下的那个名为 special.html 的文件是例外,会被单独放行。同时,通过 Sitemap 行向爬虫指明了站点地图所在的网址。
配置该文件的过程看似简单,但细节上的疏漏往往会让预期效果大打折扣。以下几个场景在实战中最常遇到,值得多加留意:
需要特别指出的坑是:规则中的路径匹配遵循前缀匹配原则。例如,一行 Disallow: /news 不仅会屏蔽 /news 页面,同时也会屏蔽 /newsletter 页面。如果只想限制前者,则务必写成 Disallow: /news/。此外,请务必将该文件置于网站域名的根目录下,任何非根目录位置的文件都会被搜索引擎忽略。
将文件部署上线后,切忌直接撒手不管。利用搜索引擎官方提供的站长工具,是验证配置是否精准生效的最佳途径。例如,在搜索资源平台中,可以通过“检查 URL”功能模拟谷歌爬虫的抓取行为。
建议你在自查时重点核对以下参数:
当你的开发环境存在测试机器人时,也可以在本地环境先行模拟抓取,观察日志中蜘蛛的实际访问路径,从而确认规则执行无误。
最可能的原因是内容在被封禁之前就已经被收录并生成了索引。Robots.txt 协议仅在爬虫执行新抓取时生效,它无法主动删除已存在于搜索引擎数据库中的旧快照。若需彻底移除,应配合使用站长工具中的删除请求功能,并优先考虑通过 noindex 标签来避免内容被建立索引。
可以,但强烈不建议。因为该文件默认使用 UTF-8 或 ASCII 编码,若保存时操作不当,极容易导致编码错乱,进而引发解析异常。为了保证最大的兼容性,建议全文件只使用英文与半角标点符号,尽量不添加任何注释内容。
两者指向同一个目的,但提交到站长工具后台属于主动推送通道,数据反馈实时且能查看详尽的索引状态。而在 robots.txt 中写明 Sitemap 地址,主要起到协同提示的作用。同时保留这两种方式,对搜索引擎发现新页面会更有帮助。
配置 Robots.txt 应秉持“最小必要”原则,即只屏蔽确实无需收录的资源,切忌过度防御影响正常收录。建议你每次调整规则后,都借助站长工具进行验证,观察抓取日志的变化。同时,声明该文件是公开的,不要在其中透露任何含有敏感信息的路径。稳妥的配置策略,配合定期的效果复盘,才能让搜索引擎的抓取工作更有效率和针对性。