robots.txt是存放在网站根目录的纯文本文件,用来向搜索引擎爬虫说明哪些内容可以抓取、哪些需要回避。配置合理,能让爬虫更高效地扫描关键页面,帮助新内容更快被收录;配置不当,语法错误或路径判断失误都可能导致抓取异常,进而影响网站的搜索表现。理解它的工作逻辑和容易被忽略的细节,是每个网站运营者都需要掌握的基础技能。
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,其抓取频率会根据算法和站点响应状况自行调整,针对谷歌设置该指令没有实际效果。
实际配置中,存在着几种常见错误。最普遍的是把“禁止抓取”和“禁止收录”混为一谈。Disallow只是阻止爬虫抓取页面,但该页面仍可能通过外部链接被搜索引擎收录,此时搜索结果标题下方会出现“由于该网站的robots.txt限制,此结果描述不可用”的提示。若希望控制页面是否被收录,应当使用meta robots标签中的noindex指令。
另一个高频问题是路径写错。比如把“/admin”写成“admin”,把“/*.php”这类通配符用法用在某些不支持通配符的爬虫上,都会导致规则失效。此外,文件编码必须使用UTF-8,避免出现中文字符乱码导致解析异常;文件大小不宜过大,常规建议控制在500KB以内,虽然多数搜索引擎只读取文件前几百行。
还有一点值得留意:不要把注释写得太随意。虽然支持#号注释,但若在路径中间插入注释,可能破坏指令的完整性,引发不可预料的解析错误。修改文件后,建议及时前往各大搜索引擎的站长工具中提交并测试,确认规则生效情况。
配置robots.txt前,先梳理站点目录结构,明确哪些路径需要抓取、哪些应禁止。一个常见的做法是:允许所有爬虫抓取全部内容,再针对后台、接口等敏感路径设置限制。
例如一个博客站点的robots.txt可以这样设计:允许所有爬虫抓取首页和文章页,禁止抓取后台管理目录和搜索页。同时为百度蜘蛛单独设置较低的抓取频率,以减轻服务器压力。这种配置既保证了正常内容的抓取收录,又避免了不必要的资源消耗。
不能完全阻止。robots.txt只禁止爬虫发起抓取请求,但如果其他网站链接到该页面,搜索引擎仍可能将其收录进索引,只是无法获取页面内容来生成快照和描述。若想真正阻止页面出现在搜索结果中,需要使用meta robots的noindex指令或通过认证手段保护。
没有固定时间。搜索引擎爬虫通常会定期重新获取robots.txt文件,间隔从数小时到数天不等。修改后可以主动在搜索引擎站长工具中提交,加速抓取和更新,同时也能测试规则是否书写正确。
当同一URL同时匹配多条规则时,搜索引擎采用“最长匹配优先”原则。路径匹配越长越具体,其优先级越高。例如Disallow: /api/和Allow: /api/public/同时存在时,后者的路径更长更具体,因此public目录下的内容会被放行抓取。
robots.txt的配置看似简单,但细节之处往往决定了搜索引擎对站点的抓取效率。建议养成定期检查和更新规则的习惯,尤其是网站改版或目录结构调整后,更要及时同步文件内容。配置完成后,留意搜索引擎站长工具中的抓取报告,出现异常时第一时间排查规则是否书写正确、路径是否匹配预期。同时牢记,robots.txt只是抓取建议,真正的安全防护必须依赖更硬性的技术手段。