robots.txt是放置于网站根目录的纯文本文件,用于向搜索引擎爬虫说明哪些页面可以被抓取、哪些路径应当避开。合理配置可以让爬虫将抓取额度集中于优质内容,加速新页面的索引;配置失误则可能导致整站抓取受阻,甚至影响既有排名的稳定性。理解其语法规范和潜在陷阱,是网站运营者的必备技能。
robots.txt本质上是一份面向爬虫的“抓取许可说明”,并不具有强制约束力。任何访客都能在浏览器中直接输入“域名/robots.txt”查看其内容。它相当于园区入口处的导览牌,告知访客可参观的区域,但核心数据机房绝不能仅依靠这块牌子进行防护。
该文件只影响爬虫“是否发起抓取请求”,并不直接决定页面“是否被收录”。举例来说,若某页面被Disallow规则屏蔽,但站外存在大量外链指向它,搜索引擎依然有可能将其纳入索引库,仅在展现时可能显示缓存版本或摘要片段。
需要特别警惕的是,这套协议完全依赖爬虫的自觉遵守。主流搜索引擎的蜘蛛大多遵循规范,但各类采集工具和恶意爬虫通常对此视而不见。凡涉及用户隐私数据、后台管理入口、交易结算接口等敏感路径,务必要启用登录验证、IP访问控制或应用防火墙等强制性手段进行拦截,切勿将安全防护的重任寄托于这份“君子约定”之上。
robots.txt由若干规则组构成,每一组以User-agent行起始,表明该组规则所适用的爬虫对象。指令书写格式统一为“指令名: 值”,冒号必须使用英文半角字符,并在其后保留一个空格。尽管多数爬虫具备一定的容错能力,但规范的书写能有效降低后续排查与解析的麻烦。
此行确定了当前规则组的适用范围。若仅针对谷歌蜘蛛,可写为“User-agent: Googlebot”;若要覆盖所有搜索引擎,则使用通配符“User-agent: *”。通过划分多个规则组,可实现差异化管理,例如对谷歌放宽抓取限制,同时对必应施加访问约束,从而精细化地控制不同爬虫的行为边界。
Disallow用于声明禁止抓取的路径,Allow则用于声明允许抓取的路径,二者常搭配使用。一个常见的认知误区在于:若Disallow后留空不填写任何路径,其含义是解除全部限制,允许爬虫遍历整站目录。当某一条URL同时可能命中多条规则时,搜索引擎普遍遵循“最长匹配优先”的原则——即路径匹配字符数更多的规则优先生效。例如同时存在“Disallow: /api/”与“Allow: /api/public/”两条规则,后者路径更长、优先级更高,因此该子目录下的资源可以得到正常抓取。
Sitemap指令用于声明站点地图的完整地址,方便爬虫快速了解站点结构,一般置于文件末尾。Crawl-delay指令用于设定爬虫两次抓取请求之间的等待秒数,以缓解服务器压力。但需注意,谷歌的蜘蛛程序并不支持Crawl-delay指令,其抓取频率由系统内部算法自行调整,对此指令不予理睬,试图借此调节谷歌抓取节奏的做法往往无法达到预期效果。
语法本身并不繁杂,但很多站点却在细微处频频出错。以下三类问题在实际运维中极为常见,建议逐一对照排查。
冒号后误加多余空格、路径中的斜杠方向写反、误用中文全角标点,这些微不足道的问题都可能导致规则失效。建议每次编写或修改后,立即在浏览器中访问“域名/robots.txt”查看渲染结果,并借助搜索引擎官方的抓取测试工具进行规则校验。同时,务必确认文件以UTF-8无BOM格式编码保存,以避免中文注释或路径出现乱码干扰解析。
部分站长在修改规则时,不慎将“Disallow: /wp-admin/”这类具体限制误写为“Disallow: /”,这将直接导致全站页面被禁止抓取。更隐蔽的情况是,规则本意是屏蔽某个文件目录,却因遗漏了末尾的斜杠,导致前缀相同的其他路径一并被波及。在执行任何涉及根目录的屏蔽规则前,务必确认该规则的生命周期和使用场景,防止长时间断送整站的自然搜索流量。
网络上流传着一些所谓的“高级指令”,例如用于指定抓取时间段的“Visit-time”或限定抓取频率的“Request-rate”。这些指令并非行业通用标准,仅被极少数的早期爬虫程序所识别。在不了解搜索引擎实际支持范围的情况下盲目添加这些指令,不仅无法产生预期效果,还可能干扰爬虫对标准规则的正常读取。建议只使用规范中明确列出的标准指令字段。
规划一份实用的robots.txt并不需要从网上复制大段模板,而是应该基于站点自身的目录结构调整而来。以下步骤可作为参考起点。
需要注意的是,robots.txt规则不宜设置得过于复杂冗长。过多的规则行不仅增加爬虫的解析耗时,也容易在后期维护中造成逻辑冲突,让管理者难以判断最终生效的抓取范围。
并无统一的时间标准。搜索引擎的爬虫会定期重新获取该文件,但这个周期长短不一,短则数小时,长则数天。对于严重误配置导致的紧急情况,可尝试通过搜索引擎的站长平台提交抓取请求,以加速规则的更新生效。
这种操作通常不能实现快速移除。Disallow仅阻止后续的抓取行为,对于已经收录的页面,搜索引擎仍需经过重新抓取和评估流程,才会在后续迭代中逐步降低其展示权重。若需彻底移除索引,建议使用更明确的noindex指令结合robots.txt双重配置。
需要。长期保留不再指向任何真实资源的Disallow规则,会造成规则冗余,增加维护成本。更重要的是,若旧规则存在前缀匹配的模糊性,很可能意外覆盖新架构下的合法路径,干扰正常内容的抓取。建议每半年审查一次规则列表,移除已失效的条目。
robots.txt是网站与搜索引擎爬虫之间的第一份沟通协议,值得投入精力仔细打磨。在实际操作中,请牢记两点:一是敏感数据防护必须依赖硬性访问控制,不能依赖此文件;二是每次修改后务必做真实环境的规则校验。建议从最小化的规则集开始,逐步根据业务需求扩充,时刻保持规则的简洁与清晰。