robots.txt 是一个放在网站根目录的纯文本文件,用简单的指令告诉搜索引擎爬虫哪些内容可以抓取、哪些需要避开。设置得当,爬虫会把精力集中在重要页面上,新内容也能更快被收录;一旦写错,轻则部分页面消失,重则整站抓取异常。这篇文章会讲清楚它的语法逻辑、匹配规则,以及实操中最容易出错的地方。
robots.txt 的本质是一份给爬虫看的“路标”,它只影响爬虫是否访问某个网址,不直接决定页面是否出现在搜索结果里。你用浏览器输入“域名/robots.txt”就能看到当前内容。即便你屏蔽了某个路径,搜索引擎仍可能通过外部链接发现该页面并建立索引,只是快照内容往往是残缺的。
想让页面彻底从搜索结果中消失,正确做法是在页面头部添加 noindex 元标签,而不是只靠这份文件。另外,这份协议完全依赖爬虫自觉遵守。主流搜索引擎的蜘蛛一般都会照做,但各类采集工具、恶意程序根本不会理睬。凡是涉及用户隐私、后台管理、支付交易等敏感目录,必须叠加登录验证、IP 白名单或防火墙等硬性措施,绝不能把安全寄托在“君子协定”上。
robots.txt 由多个规则组构成,每组以 User-agent 开头,组与组之间用空行隔开。每条指令格式为“字段名: 值”,冒号务必使用英文半角符号,冒号后建议留一个空格,方便解析也利于阅读。
这个字段表明当前规则组作用于哪类爬虫。比如只限制谷歌搜索,就写“User-agent: Googlebot”;面向所有搜索引擎,则用通配符“User-agent: *”。你可以为不同爬虫设置差异化策略,例如给 Googlebot 更宽的抓取权限,对 Bingbot 收紧部分目录限制。
Disallow 表示禁止抓取的路径,Allow 表示允许抓取的路径。一个常见细节是:Disallow 后面不填任何值,代表允许爬虫抓取全站。当多条规则同时命中同一个网址,搜索引擎遵循“最长匹配优先”原则——路径字符越具体,优先级越高。比如同时有“Disallow: /admin/”和“Allow: /admin/public/”,因后者路径更长,public 子目录的内容将被允许抓取。
Sitemap 字段用来声明站点地图的绝对地址,帮助爬虫更快发现页面,一般放在文件末尾。Crawl-Delay 用来设定两次抓取之间的间隔秒数,部分搜索引擎支持,但谷歌官方不认这个指令,想控制抓取频率得去 Search Console 后台操作。
最常见的错误是路径理解偏差。Disallow 后面填的是站点根目录下的相对路径,不是完整网址。比如想屏蔽 /images/ 目录,正确写法是“Disallow: /images/”,写成 https://域名/images/ 就是错的。其次要注意通配符的适用范围,星号(*)表示匹配任意字符序列,但并非所有搜索引擎都完整支持,建议只在主流搜索引擎的规则组中使用。
大小写问题也容易踩雷。路径匹配是区分大小写的,“/Product/”和“/product/”会被视为两个不同路径。建议在配置前后,用浏览器逐一访问被屏蔽的路径,确认返回的是 404 或禁止访问,而不是 200 状态码。另外,文件编码务必保存为 UTF-8 无 BOM 格式,避免中文注释或路径出现乱码。
还有一类错误出现在文件层级上。robots.txt 必须放在站点根目录,且文件名不能改动。放在子目录或命名成其他名字都无效。修改文件后,爬虫不会立即读取新规则,通常需要一周左右才能完全生效,期间不要频繁改动,保持规则稳定。
配置完成后,别急着上线。先用 Google Search Console 的 robots.txt 测试工具,输入规则和待测网址,模拟抓取看是否命中预期。同时对常用爬虫分别测试,比如 Googlebot、Bingbot、Baiduspider,确认各自得到的目标结果。
推荐按以下步骤走一遍:
没有固定期限。爬虫按照自己的抓取周期重新获取该文件,短则几小时,长则一周左右。想加速可以主动在 Search Console 提交更新,但效果因搜索引擎而异,建议修改后保持规则稳定至少一周再评估。
不能。它只是建议性协议,无法阻止恶意脚本和采集程序。敏感信息必须靠登录认证、服务端权限控制来保护,robots.txt 只用来引导正常爬虫避开重复或低价值内容。
立即修改文件,将 Disallow 的值清空或直接删除该规则行,然后保存并确认可通过浏览器访问到新内容。等待爬虫重新抓取即可,通常不会造成永久性影响,但要尽快处理以减少抓取空窗期。
robots.txt 配置不难,重在细节。记住三条原则:只管抓取不管收录,敏感目录叠加多重防护,路径写完整且区分大小写。每次修改后务必用测试工具验证,再上线部署。如果你的站点还处于早期阶段,建议从简单的全站放行加 Sitemap 开始,随着内容增长再逐步细化规则,这样既安全又便于维护。