robots.txt 是放在网站根目录下的一个文本文件,它通过简单的规则告知搜索引擎爬虫哪些路径可以访问、哪些应回避。文件写得好,能帮助爬虫更高效地抓取重点内容,促进新页面收录;写错了,则可能让整站收录量下滑,或造成后台、隐私页面暴露风险。理解它的语法逻辑和限制边界,对每个站点管理者都很有必要。
很多新手会把 robots.txt 当作“禁止收录”的开关,这其实是误解。它的本质是向遵守规范的爬虫提出抓取建议,而不是强制命令。一个页面即使被 Disallow 屏蔽,如果外部链接已经指向它,搜索引擎仍可能将其收录并展示在结果中,只是页面内容不会被抓取分析。
若想彻底阻止某页面出现在搜索结果里,应该在网页 HTML 的 head 区域加入 noindex 元标签,或者使用响应头 X-Robots-Tag。robots.txt 管的是“能不能爬”,noindex 管的是“能不能展示”,两者配合使用才能实现完整控制。
同时要牢记,robots.txt 对恶意采集程序、黑客扫描器以及不遵守协议的爬虫完全不设防。凡是涉及用户订单、支付回调、后台管理或数据库接口的路径,必须依赖登录验证、IP 白名单、接口鉴权等更强的安全机制,绝不能把这里当作唯一防线。
文件由若干规则组构成,每组以 User-agent 开头,随后是若干条指令。标准格式是“字段名: 值”,冒号后建议保留一个空格,字段名统一用小写字母,以减少不同解析器产生兼容性差异的可能。
User-agent: Googlebot 表示本组规则仅对谷歌主爬虫生效;User-agent: * 则对全体未知爬虫生效。实际配置中经常同时写多个规则组,例如给 Googlebot 配置更宽松的抓取路径,给 Bingbot 配置更严格的限制,以此精细化调配各搜索引擎的抓取配额。
Disallow 声明禁止抓取的路径,Allow 声明允许抓取的路径。注意,如果 Disallow 后为空,表示允许爬虫抓取全站。当一个 URL 同时符合允许和禁止的规则时,搜索引擎遵循“最长匹配优先”的原则——路径更长的规则获胜。例如文件中有 Disallow: /admin/ 与 Allow: /admin/public/,那么 /admin/public/ 目录下的内容仍然可以被抓取,因为这条规则路径更长、更具体。
Sitemap 指令用于告知爬虫站点地图的完整地址,例如 Sitemap: https://example.com/sitemap.xml。它有助于加速新链接的发现,尤其适合内容更新频繁或页面层级较深、依赖内链难以被快速爬取的站点。
Crawl-delay 用于设定两次抓取请求之间的间隔秒数,适用于服务器性能有限的小站点,可缓解瞬时压力。但需注意,Google 早已明确不支持此字段,Bing 也基本忽略,主要对部分小型爬虫或历史遗留爬虫有效,不可当作控流的主要手段。
根据网站类型和实际需要,以下几种配置方案经常被直接采用:
配置完成后,务必通过站长平台的 robots 检测工具验证每一组规则的实际效果,并检查是否存在手误导致的目录误伤。例如错误写成 Disallow: /api 而无尾部斜杠,会同时屏蔽 /api 开头的所有路径,包括 /application,造成大量误拦截。
实践中,很多站点因为一些不起眼的细节踩坑,以下问题最值得警惕:
当发现页面收录异常时,优先检查最近是否修改过 robots.txt,恢复原内容后再逐步验证。建议在每一次修改后都通过抓取测试工具模拟一次真实爬取,确认返回的规则结果符合预期。
不能。robots.txt 只是禁止爬虫抓取正文内容,如果页面被外部链接引用,搜索引擎仍可能将其索引展示标题和摘要,甚至直接显示 URL。真正需要保密的内容应放在需要登录验证的路径下,或用 noindex 标签组合处理。
Disallow: / 表示禁止抓取全站,所有路径都被屏蔽;而 Disallow: 后面为空,语义是完全相反,表示允许抓取全站、解除限制。两者视觉效果相近,但含义完全相反,配置时务必分清。
搜索引擎爬虫通常会定期重新抓取 robots.txt,Google 大约 24 小时左右更新一次,但具体时长取决于站点权重与抓取频率。若想尽快生效,可通过站长平台的“抓取测试”或主动提交工具触发重新读取。
配置 robots.txt 前,先梳理清楚站点的目录结构与实际需求,明确哪些路径必须公开、哪些应当屏蔽;写完后不要直接上线,先利用各平台提供的检测工具验证规则匹配结果,再观察一周左右的抓取报告与收录变化。同时,将 robots.txt 的管理纳入站点日常更新流程,任何目录调整或功能上线都要同步复查规则,避免因文件长期未维护而带来意外风险。