robots.txt 是网站根目录下一个名为 robots 的纯文本文件,它的作用是与搜索引擎的抓取程序沟通,告知哪些页面可以访问、哪些区域需要回避。文件设置得合理,抓取资源会被高效分配,新页面入库也更快;但一旦出错,轻则部分页面迟迟不被收录,重则拖累整站的自然搜索表现。下面就从文件本质、语法规则到常见误区,逐层拆解这份文件的配置门道。
首先要明确一点:robots.txt 对搜索引擎只是建议,不具备强制力。它相当于一张公开展示的访客须知,任何人都可以直接通过浏览器访问
域名/robots.txt
来查看文件内容。它的作用范围仅限于“是否发起抓取请求”,并不直接决定一个页面最终是否出现在搜索结果中。比如一个被禁止抓取的内部页面,如果站外存在大量外链,它依然有可能被搜索引擎收录,只是展示的信息可能来自缓存或页面描述片段。
更要紧的是,这套规则完全依赖抓取方的配合。主流搜索引擎的蜘蛛基本会遵守,但各类采集脚本、数据抓取工具根本不会把这些指令放在眼里。凡是涉及用户个人信息、管理后台、支付入口等敏感路径,必须额外配合登录校验、IP 限制或防火墙等硬性拦截手段,切勿把安全期望全押在这份协议上。
robots.txt 的内容由多个规则组构成,每个规则组以 User-agent 行开头,用来声明该组规则针对哪类爬虫。书写格式统一为“名称: 值”,冒号必须使用英文半角,冒号后建议保留一个空格。大部分爬虫对格式有一定容忍度,但保持规范书写能减少后续解析问题。下面逐一说明几个关键指令。
这一行用于指定规则组的适用范围。想让规则只作用于谷歌蜘蛛,就写 User-agent: Googlebot;希望所有搜索引擎统一适用,则使用通配符写法 User-agent: *。通过安排多个规则组,可以实现精细化运营,例如对谷歌完全放行,同时限制另一家搜索服务的抓取间隔。
Disallow 用来声明禁止访问的路径,Allow 用来声明允许访问的路径,二者常配合解决复杂场景。这里存在一个容易踩坑的细节:Disallow 后面如果留空,代表清除对该爬虫的所有限制,等于允许抓取全站。当某个地址同时命中多个规则时,搜索引擎普遍遵循“最长匹配优先”的原则——路径写得更具体,优先级就更高。例如同时配置了 Disallow: /api/ 和 Allow: /api/public/,后者匹配的路径更长,所以 public 子目录下的内容会被正常放行。
Sitemap 指令用于声明网站地图的完整网址,方便爬虫快速掌握站点结构,通常放在文件末尾。Crawl-delay 指令用于设定爬虫两次抓取请求之间的间隔秒数。不过需要特别提醒:谷歌搜索引擎的蜘蛛并不支持 Crawl-delay,它的抓取节奏由后台算法自主决定,若在这些细节上依赖该指令,结果可能不尽如人意。
语法规则本身不难,但实际配置中不少站点栽在了细节上。以下三类错误最为常见,值得逐一排查。
/admin/
的目录。配置前最好核实日志或后台中真实的路径写法。
一旦静态资源被整体封禁,页面渲染受限,可能间接影响排名表现。
写好一份可用的 robots.txt,可以按以下流程操作。
比较稳妥的做法是,先采用“只屏蔽明确不需要的目录”的保守策略,随后借助抓取测试功能观察核心页面的抓取状态,避免因误伤导致收录量异常下降。
不会。Disallow 的作用是阻止蜘蛛发起新的抓取请求,已经在搜索结果中的页面不会立即被移除。如果希望已收录页面尽快消失,还需结合 noindex 标签或直接删除页面内容。
根据需求而定。如果希望所有搜索引擎统一遵循同一套规则,使用 User-agent: * 即可。如果针对特定搜索服务的抓取频率或内容范围有差异化要求,就必须为其单独声明一个规则组,并将它放在通配符规则之前,以保证被优先解析。
取决于错误的形式。若是字符或路径书写错误,通常只影响对应规则,且蜘蛛解析时有一定的容错余地。但如果是文件命名或存放位置出错,爬虫将找不到任何规则,便会默认放行全站,这未必是坏事,却可能让服务器压力陡增。最稳妥的做法是每次修改后都到站长工具中做一次完整性校验。
配置 robots.txt 的核心思路,是在“允许抓取”与“限制无谓流量”之间找到平衡。动手前先梳理站内目录结构,明确哪些路径值得优先抓取、哪些区域资源消耗大且无收录价值;配置时规范书写、区分大小写,并对敏感内容叠加技术层面的访问控制;上线后每隔一段时间复查抓取日志,及时修正失效规则。记住这份文件是给蜘蛛看的指引牌,安全防护的重任还是要交给更可靠的硬性措施。