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 指令用来声明站点地图的完整地址,帮爬虫更快了解全站的内容结构,一般写在文件末尾。Crawl-delay 指令规定爬虫两次抓取之间的间隔秒数,但谷歌蜘蛛不认这条指令,它的抓取节奏是依据自身算法和站点响应状况动态调整的。因此,专门为谷歌设置 Crawl-delay 不会起任何作用。
很多站点在配置 robots.txt 时都会犯一些典型的错误,最常见的几类值得特别注意。
第一类是把绝对 URL 当作路径来写。Disallow 的取值是路径片段,不是完整网址。正确写法是 Disallow: /private/,写成 Disallow: https://example.com/private/ 不仅冗长,还容易因为各爬虫对完整 URL 的解析差异导致规则失效。第二类是误用通配符和正则。robots.txt 本身只支持有限字符集,比如 * 和 $,但并非所有爬虫都支持完整的正则表达式;尽量用简单的目录和路径匹配,避免复杂的正则写法。第三类是全局禁止抓取却忘了放开静态资源,比如 CSS、JS 文件被一并禁掉,搜索引擎可能因为无法渲染页面而降低收录质量。第四类是规则层级写反,把应该放行的子目录放在了禁止规则的下面,导致“最长匹配优先”策略反而让放行规则永远无法生效。
建议在正式上线前列出网站的目录清单,逐条核对每条规则是否与预期一致;如果对某些写法不确定,可以先用在线工具或搜索引擎自带的抓取测试工具验证规则的实际效果,再应用到线上环境。
编写 robots.txt 时,尽量从简出发,能用一条规则解决的不要写三条。以下是推荐的步骤:
一条实用的经验:只有明确不希望被收录的路径才放进 Disallow,其余内容尽可能对爬虫开放。抓取配额有限,过多屏蔽会浪费宝贵的抓取机会,反而不利于新页面的收录。
改动本身不会立即触发重新抓取,搜索引擎仍按自己的节奏来访问你的站点。你可以主动在站长平台提交更新后的文件,或用抓取工具手动请求一次,能明显缩短等待时间。
不能完全阻止。它只能限制爬虫是否发抓取请求;如果页面已被外部链接大量引用,搜索引擎仍可能收录并展示缓存快照。若想彻底禁止收录,应使用 noindex 标签,而不是依赖 robots.txt。
可以。通过拆分多个规则组,每组指定不同的 User-agent 即可。比如限制某一爬虫抓取图片目录,同时允许另一爬虫正常抓取,只要各组规则不冲突、不重叠就行。
robots.txt 看似简单,实际配置时依然有不少容易忽略的细节。最重要的三条建议:一是把文件当说明书而非安全锁,敏感路径必须加硬防护;二是严格使用路径片段而非完整 URL,保证语法规范和匹配逻辑正确;三是上线前逐条核对规则并用测试工具验证。把规则整理清楚,才能让搜索引擎把抓取资源用在刀刃上,帮助站点内容更快、更稳地被收录。