每个网站在上线后,都绕不开根目录下那个名为 robots.txt 的文本文件。它不看代码质量,也不管页面美不美观,只负责告诉搜索引擎的爬虫:哪些目录可以进,哪些地方不能碰。配置得当,爬虫的预算会被集中用在刀刃上,新内容收录速度明显加快;一旦写错,后果可能是核心页面迟迟不被索引,甚至整站被搜索引擎清出结果页。这份指南会把语法和易错点一次说透。
这个文件的访问路径是固定的,只要在域名后加上 /robots.txt 就能直接看到,比如 https://example.com/robots.txt。文件必须放在服务器根目录,文件名大小写不能有差错,否则爬虫根本找不到它。需要特别强调的是,它只负责控制"抓取"这个动作,管不了"收录"这件事。想让某个页面彻底从搜索结果里消失,正确做法是在页面头部添加 noindex 标签,靠 robots.txt 去拦是拦不住的。
还有一种常见误解是把它当成安全工具。实际上,这份文件对正规搜索引擎有约束力,但恶意采集程序和黑客脚本根本不会理会它的规则。凡是涉及用户隐私、付费内容或后台管理地址的路径,必须叠加登录鉴权、IP 白名单等硬性防护,千万别把安全寄托在一份纯文本文件上。另外,养成定期检查的好习惯,防止无意中把敏感路径写进文件,等于主动给爬虫递上了一份目录清单。
整份文件的结构是由一条条规则组构成的,每一组以 User-agent 字段开头。每条指令的写作格式都是"字段名: 空格 + 值",字段名统一用小写字母,冒号后的空格建议保留,这样兼容性最好。
这个字段负责声明规则约束的对象。比如写 User-agent: Googlebot,意味着下面这些规则只对谷歌的爬虫生效;如果写 User-agent: *,则代表对百度、谷歌、Bing 等所有搜索引擎的爬虫一视同仁。同一个文件里可以写多组规则,分别给不同爬虫分配权限。有一点容易让人犯迷糊:当某个爬虫同时命中多组规则时,搜索引擎通常会按照匹配路径最长的那个规则组来执行。自己拿不准结果时,建议用各站长平台的 robots 测试工具验证一下实际生效情况。
Disallow 声明的是禁止抓取的路径,Allow 则声明明确放行的路径。有个细节常被忽略:如果 Disallow 后面什么都没写,那就是不限制任何路径,等于对全站开放。当 Allow 和 Disallow 对同一条路径产生矛盾时,搜索引擎统一采用"匹配路径更长者优先"的原则来处理。举个例子,如果同时设置了 Disallow: /api/ 和 Allow: /api/public/,那么 /api/public/ 目录下的内容照样能被爬虫抓走。书写路径时,建议从域名根目录开始写完整路径,不要用含糊的缩写或省略写法。
Sitemap 指令用来声明网站地图文件的完整地址,一般放在文件末尾,方便爬虫直接拿到全站的内容清单。Crawl-delay 则用来设定两次抓取之间的间隔时间,但这里有个坑:谷歌早就公开声明完全不理会这个指令。如果想让谷歌爬虫降低抓取频率,得去 Google Search Console 后台调节抓取速率;不过这个指令对 Bing 等引擎依然有效,保留着无妨。
下面整理了几组最常见的配置写法,实际使用的时候把路径替换成自己站点的情况就行。
看完语法和模板,再来看几个真正常见的问题。每一条都是实操中容易踩进去的坑,值得对照检查一遍自己的配置。
这是最典型的认知偏差。很多人在 robots.txt 里屏蔽了一个 URL,就以为它马上会从搜索结果消失。实际上,如果页面已经被搜索引擎收录,屏蔽只会导致抓取被阻止,但收录状态可能继续保留,甚至因为无法重新抓取而无法更新页面标题和摘要。想让已收录页面下线,必须在页面本身加上 noindex,并且确保该页面允许爬虫访问,才能被正常移除。
文件名的 robots.txt 必须全小写,目录名和文件名的大小写也区分对待。爬虫的匹配是区分大小写的,如果站点里有 /Product/ 目录,而你在文件里写的是 /product/,那就对不上号了。此外,写路径时用绝对路径还是相对路径也是个学问,建议统一从根目录写起,避免使用不规范的简写。
* 号可以用来匹配任意长度的字符,$ 号代表匹配结尾。比如 Disallow: /*.jpg$ 表示屏蔽所有以 .jpg 结尾的图片。但通配符用起来很容易出错,比如忘了加 $ 符号,可能把整条路径都误伤。使用有通配符的规则后,务必用测试工具实际验证一遍,确认屏蔽范围符合预期。
文件里用 # 开头来表示注释,这一行内容会被爬虫忽略。但有人会把注释写在规则后面同一行,比如写成 Disallow: /tmp/ # 临时目录,那么后面的 # 及之后的内容没问题,但有部分爬虫对同一行指令的解析可能不够严谨,稳妥起见,注释一律单独占一行。
写完 robots.txt 不是终点,上传到服务器后立刻做两项检查。第一,直接在浏览器里访问 https://你的域名/robots.txt,确认内容完整且没有多余字符;第二,打开各大搜索引擎的站长平台,用自带的 robots 测试工具提交文件内容,看看爬虫视角下能访问哪些 URL。
日常运营中还要注意,robots.txt 是面向全站生效的动态策略。每逢改版、上线新频道或者关闭旧功能,都应该顺手复核一遍这份文件,确认没有遗漏或过期的屏蔽规则。重点记住一个原则:robots.txt 只管抓取,不负责收录;它是效率工具,不是安全屏障。把它放在正确的位置上,才能让爬虫预算花在最有价值的地方。
不会直接触发惩罚,但后果可能很严重。如果误屏蔽了全站,爬虫会完全停止抓取,新内容无法进入索引;如果屏蔽了带参数的动态 URL,可能导致大量页面被判定为重复内容。发现写错后立即修正并上传,再用站长工具申请重新抓取,一般很快就能恢复。
搜索引擎普遍遵循"最长匹配"原则:哪条规则的路径写得更具体、更长,就按哪条执行。比如一条规则写 Disallow: /,另一条写 Allow: /public/,那么爬虫会依据更长的 /public/ 这条来放行该目录。如果不确定,用站长平台的工具测试一遍最稳妥。
不建议这样做。搜索引擎抓取这些静态资源是为了理解页面渲染效果和内容相关性,屏蔽它们反而会影响页面的排名评估。除非服务器带宽严重不足,否则保持默认放行状态是最优选择。
robots.txt 的配置并不复杂,但每一个细节都可能影响站点的收录表现。建议你花十分钟检查一下当前文件:确认文件名大小写正确、路径书写完整、没有遗留的敏感目录、屏蔽范围没有误伤。把这份文件当成一个需要定期维护的配置项,而不是写完就忘的一次性任务,才能让它在搜索引擎优化中真正发挥作用。