robots.txt 是存放在网站根目录的纯文本文件,用于向搜索引擎爬虫说明哪些路径可以抓取、哪些路径需要屏蔽。合理配置该文件,有助于搜索引擎把抓取预算集中在重要页面,加快新内容收录速度;而配置不当则可能造成整站抓取异常,损害搜索流量。这篇文章将逐一拆解它的语法结构、匹配机制以及实际运用中的高频问题。
robots.txt 的协议本质是约束爬虫的抓取动作。你可以在浏览器中输入"域名/robots.txt"查看当前文件内容。需要明确的是,即使该文件正确屏蔽了某个路径,搜索引擎仍可能因外部链接而收录该页面的部分信息,只是快照内容可能不完整。若想让某个页面彻底从搜索结果中消失,正确的做法是使用 noindex 元标签,而非仅仅依赖该文件。
此外,这份协议依靠爬虫的自愿遵守。主流搜索引擎的蜘蛛大多遵循规范,但第三方采集工具、恶意程序通常对其视而不见。对于后台管理区、用户隐私、交易数据等敏感目录,必须同时配置登录验证、IP 限制或防火墙等额外保护措施,切勿将站点安全寄托于这个"君子协定"之上。
文件内容由多个规则组构成,每个规则组以 User-agent 行开始,组与组之间用空行隔开。每条指令的通用格式为"字段名: 值",冒号须使用英文半角符号,建议在冒号后跟一个空格以提升可读性。
该字段声明当前规则组作用于哪种爬虫。想限制 Google 搜索爬虫,可写"User-agent: Googlebot";若要覆盖所有搜索引擎,则用通配符"User-agent: *"。你可以分别为不同爬虫设定差异化策略,例如对 Googlebot 开放更多目录,而对 Bingbot 收紧部分路径权限。
Disallow 声明禁止访问的路径,Allow 声明允许访问的路径。一个容易被忽略的细节是:若 Disallow 后面留空,则代表允许爬虫抓取全站。当多个规则同时命中同一 URL 时,搜索引擎遵循"最长匹配优先"原则,即路径字符越长越具体,优先级越高。例如同时存在"Disallow: /admin/"与"Allow: /admin/public/",因后者路径更长,public 子目录会被允许抓取。
Sitemap 字段用于声明站点地图的绝对地址,方便爬虫更快发现页面,一般放在文件末尾。Crawl-Delay 用于设定爬虫抓取间隔秒数,部分搜索引擎支持该指令,但 Google 官方不认可,而是建议在 Search Console 后台调整抓取速率。
最常见的错误是路径理解偏差。Disallow 后面填写的是相对于根目录的路径,而非完整网址。例如,要屏蔽 /images/ 目录,应写"Disallow: /images/",而不是"Disallow: https://域名/images/"。其次,通配符的使用需谨慎,星号(*)可匹配任意字符序列,美元符号($)表示匹配结尾,但滥用通配符容易误伤正常路径。
另一个常见问题是大小写敏感。robots.txt 中的路径是区分大小写的,"/Category/" 与 "/category/" 被视为两个不同路径。若网页实际使用小写目录而文件写成大写,屏蔽规则将完全失效。建议在配置后逐条检验每条规则的实际效果,而非凭感觉直接上线。
配置完成后,不要立即认为万事大吉。建议按以下步骤进行验证与调优:
同时,避免以下两类常见失误:一是用 robots.txt 屏蔽 CSS/JS 文件,这会阻碍搜索引擎完整渲染页面,反而影响排名;二是将 Allow 和 Disallow 交替堆叠过多,难以排查逻辑冲突,尽量保持规则简洁清晰。
不会受到直接惩罚,但可能造成抓取异常,比如首页被误屏蔽会导致整站从索引中逐渐消失。Google 官方明确表示,robots.txt 错误不会触发人工处罚,但会显著影响抓取效率与收录结果。
仅靠 robots.txt 屏蔽并不足够,页面仍可能被外部链接发现。最佳方案是组合使用 noindex 元标签,并在确认生效后移除 robots.txt 中的屏蔽规则,避免两者冲突。
Google、Bing 等主流搜索引擎一般会遵守协议,但其他小型爬虫、采集工具可能忽略它。关键目录必须叠加服务器层面的访问控制,不能仅依赖该文件作为唯一防线。
robots.txt 是一份简单却易错的配置文件。建议在每次调整后,使用官方测试工具逐条验证规则,并定期检查抓取日志。保持规则精简、路径准确、区分大小写,同时结合 noindex 与服务器端安全措施,才能让搜索引擎的抓取行为完全符合你的预期。