robots.txt是部署在网站根目录下的纯文本文件,用于向搜索引擎爬虫声明站内哪些路径可以抓取、哪些路径需要回避。一套合理的配置能引导爬虫聚焦核心内容,提升收录效率;反之,语法错误或策略失误则可能造成抓取配额浪费,甚至导致整站收录异常。本文从文件定位、语法细节到实操陷阱,提供一份可直接落地的配置参考。
robots.txt的实质是一份公开的抓取许可声明。它依赖爬虫自觉遵守,对主流搜索引擎有效,但本身不具备任何强制执行力。任何访客都能通过浏览器直接访问“域名/robots.txt”查看文件完整内容。可以把它理解为园区的参观导览图——标注了哪些区域对访客开放,但真正的核心机房与仓储重地,绝不能仅依赖这张图来保障安全。
需要特别留意的是,robots.txt管控的是爬虫“是否发起抓取请求”,并不直接决定页面最终是否进入搜索结果。假设某页面被Disallow规则禁抓,但站外存在大量高质量链接指向它,搜索引擎仍有可能将其索引,此时展示的可能是缓存快照或摘要片段。
此外,这套协议存在天然盲区:部分采集程序与恶意爬虫会完全无视规则。凡是涉及用户隐私数据、支付回调、后台登录等敏感路径,必须叠加登录鉴权、IP访问控制或Web应用防火墙等硬性防护手段,不可将安全预期全部押注在robots.txt上。
robots.txt由若干规则组构成,每个规则组以User-agent行开头,用于界定该组规则的作用对象。所有指令格式均为“字段名: 值”,冒号需使用英文半角符号。虽然多数爬虫对格式有一定容错性,但严格遵循规范书写,可避免因解析偏差引发的隐性故障。
该行决定规则组的适用范围。若仅针对谷歌蜘蛛,可写为User-agent: Googlebot;若需覆盖所有搜索引擎,则使用通配符User-agent: *。通过配置多组规则,可实现差异化管理,比如对谷歌完全开放抓取,对必应限制特定目录的访问。
Disallow用于声明禁抓路径,Allow用于声明放行路径,两者常配合使用。一个易被忽视的细节是:当Disallow后不携带任何值(留空)时,表示清除所有限制,爬虫可自由抓取全站。当同一条URL同时命中多条规则,主流搜索引擎普遍遵循“最长匹配优先”原则——规则中路径越长、越具体,优先级越高。例如同时存在Disallow: /api/与Allow: /api/public/,由于后者路径更长更具针对性,public子目录下的资源会被优先放行。
Sitemap指令用于声明站点地图的完整URL,帮助爬虫快速掌握网站内容结构,通常置于文件末尾。Crawl-delay指令用于设定爬虫两次请求间的间隔秒数,但务必知晓,谷歌爬虫不识别Crawl-delay字段,其抓取频率由谷歌内部算法自行调度。该指令多用于保护服务器承载能力有限的路径,百度与必应对其支持程度不一,使用前需确认目标搜索引擎的兼容性。
以下列举三类常见配置场景,可直接参考调整。
配置完成后,建议通过各搜索引擎站长平台提供的robots测试工具校验语法与匹配结果,确认无误后再上线。
以下问题在实际运维中高频出现,需重点规避。
部分人误以为写成Disallow: /page/只屏蔽page目录,实则它屏蔽的是所有以/page/开头的URL,包含/page-a/与/page-b/。若只想屏蔽单页,应写完整路径Disallow: /page-a.html。
robots.txt文件体积建议控制在500KB以内,且必须存放在站点根目录,否则爬虫无法准确获取。同时,每个子域名需单独部署文件,例如www.example.com与m.example.com各有独立的robots.txt,不可混用。
明文写在robots.txt中的敏感路径(如/admin/)反而会暴露后台位置,等于向恶意访问者主动展示入口。此类路径应通过服务器端权限控制实现真正隔离。
搜索引擎会周期性重新抓取robots.txt,谷歌通常为数小时至一天内自动更新,具体时长不固定。若需加速,可在谷歌搜索管理后台使用“网址检查”工具提交抓取请求。
robots.txt仅禁止抓取,不禁止索引。若该页面被外部链接持续引用,搜索引擎仍可能收录其摘要信息。要彻底移除已收录页面,应使用noindex指令或通过站长平台提交删除请求。
可以使用#号添加注释,注释单独成行或置于指令末尾均可。但需注意,注释内容不能包含冒号,且不应与指令写在同一物理行内,以免部分爬虫解析异常。
robots.txt是技术SEO的基础环节,其核心价值在于优化抓取效率,而非控制访问安全。建议遵循以下要点:明确区分Allow与Disallow的优先级;敏感目录务必叠加服务端权限控制;文件需放置在根目录且控制体积;每次修改后利用站长工具验证匹配结果。将robots.txt配合站点地图与内链结构统筹调整,可有效提升搜索引擎对网站核心内容的抓取质量。