robots.txt是置于站点根目录的纯文本指令文件,用于告知搜索引擎爬虫哪些路径允许抓取、哪些路径应当绕过。合理编写这份文件,能够引导抓取资源向关键页面倾斜,提升新内容的索引效率。然而,语法疏忽或路径判断失误,轻则导致抓取异常,重则可能使整站排名表现受损。理解其运行逻辑与高频出错点,是网站维护者的基本功。
robots.txt对爬虫仅具备建议性质,无强制执行力。任何访问者都能通过输入“你的域名/robots.txt”查看全部规则内容。它更像园区内的指示牌,示意访客活动范围,但涉及核心数据或后台操作的关键区域,绝不能依赖此文件保护。
该文件只干预爬虫是否发出抓取请求,并不直接决定页面是否进入搜索结果。例如,某页面被禁止抓取,但若获得大量外部链接,搜索引擎仍可能将其纳入索引,只是展示的快照可能源自缓存或摘要信息。
务必牢记,此协议仰赖爬虫自觉遵守。主流搜索引擎蜘蛛通常遵循规则,但众多第三方采集程序与恶意爬虫对此视而不见。涉及用户隐私、支付流程、管理后台等敏感地带,必须同步部署登录验证、IP白名单或防火墙等硬性防护,切勿将安全防线全部寄托于此协议。
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.txt支持有限字符集,其中星号(*)代表任意长度字符序列,美元符号($)表示路径结尾。例如Disallow: /*.pdf$ 用于阻止所有以.pdf结尾的文件被抓取。但需警惕,不同搜索引擎对通配符的解析存在细微差异,部分蜘蛛可能忽略$符号,导致规则失效。书写时应尽量使用明确的目录或文件路径,避免过度依赖通配符造成预期之外的拦截。
路径匹配是区分大小写的,/SEO/ 与 /seo/ 被视为不同地址。建议在配置前复核站点真实目录命名,避免因大小写疏忽导致误拦。同时,注释行以井号(#)开头,可穿插于规则之间说明意图,但注释不应出现在规则组内部,否则部分解析器可能中断读取。
常见的错误配置往往源于对文件位置、规则层级或路径逻辑的误解。
排查时,可借助搜索引擎官方提供的robots.txt测试工具或直接访问该文件查看生效内容。发现问题后,优先检查根目录文件是否存在、语法粗误与规则组层级关系。
不能直接阻止。该文件仅控制抓取请求,若页面已被外部链接或缓存收录,即便禁止抓取,仍可能以摘要形式展示。若需彻底移除页面,应使用noindex元标签或直接删除页面。
Disallow后留空表示全部放行,等同于未设置规则;而Disallow: /则表示禁止抓取根路径下的所有内容,即全站禁抓。两者含义完全相反,填写时需格外谨慎。
以最匹配当前爬虫的规则组为准。爬虫会优先查找与其名称完全匹配的User-agent字段,若无匹配,则回退至User-agent: *所定义的规则。
配置robots.txt时,应始终从抓取效率与站点结构出发,而非将其视为安全工具。建议先梳理全站重要目录与需屏蔽的路径,再按规则组逐条书写,并利用测试工具验证效果。定期复查日志中爬虫的抓取异常,及时修正误拦或过度开放的问题,方能充分发挥这份文件的辅助价值。