站点根目录下的 robots.txt 文件,本质上是一份写给搜索引擎爬虫的访问守则。它规划了爬虫的抓取范围,进而影响页面的收录效率与权重分配。配置得当,关键内容能获得更充分的抓取;配置失误,轻则浪费抓取配额,重则误伤整站流量。掌握它的语法细节与易错点,是网站日常运维中不可忽视的一环。
robots.txt 的核心功能是定义抓取路径,而非决定页面能否进入索引库。如果一个页面被此文件屏蔽,但外部有大量高质量链接指向它,搜索引擎仍可能将其收录,只是快照内容或许来自其他来源。若想明确阻止某页面出现在搜索结果中,应在页面源代码中添加 noindex 标签。
同时,该协议依赖爬虫的自觉遵守。主流搜索引擎的蜘蛛通常会遵循约定,但部分采集工具与恶意程序并不会理会这些规则。因此,涉及后台管理、用户隐私或交易记录的目录,务必搭配登录验证、IP 白名单或防火墙等安全措施,不能将访问控制的责任完全托付给这个文本文件。
文件由多个规则组构成,每组以 User-agent 字段开头。字段书写采用“名称: 值”格式,冒号使用英文半角,冒号后保留一个空格是推荐的标准写法。虽然多数爬虫对格式要求并不苛刻,但规范书写能降低后期排查问题的难度。
此字段声明规则组针对的具体爬虫。例如,单独限制谷歌蜘蛛可写 User-agent: Googlebot;如果希望所有搜索引擎的爬虫统一执行,则使用通配符 User-agent: *。你可以建立多个规则组,对不同爬虫实施差异化策略,比如对谷歌放宽限制,同时对必应设置更严格的约束。
Disallow 用于声明禁止访问的路径,Allow 则声明允许访问的路径,二者常配合使用。一个常见误解是:Disallow 后不写任何值(即 Disallow: 后为空),代表禁止全站。实际上这表示清空限制,允许爬虫抓取整个站点。当同一 URL 同时命中多条规则时,搜索引擎遵循“最长匹配优先”原则——路径越具体,优先级越高。例如同时存在 Disallow: /admin/ 与 Allow: /admin/public/,后者路径更长,因此 public 子目录会被放行,这一特性常用于精细控制。
Sitemap 指令用于声明站点地图的完整 URL,方便爬虫快速了解网站结构,通常放在文件末尾。Crawl-delay 指令用于设定爬虫两次抓取之间的延迟时间(秒)。需要注意的是,谷歌爬虫并不支持该指令,官方建议通过 Search Console 后台的抓取速率设置来调整。
路径书写是最高频的错误来源。Disallow 后的值对应站点根目录下的相对路径,而非完整 URL。比如要屏蔽 /private/ 目录,直接写 Disallow: /private/ 即可,无需也不应包含域名部分。
通配符的兼容性也需留意。标准语法中允许使用 * 匹配任意字符序列,以及 $ 匹配路径结尾,但不同搜索引擎对通配符的支持程度并不一致。复杂规则可能在某些蜘蛛下失效,建议保持规则简洁直观,避免编写过长且依赖高级匹配的语句。
此外,文件编码需保存为 UTF-8(无 BOM),注释行使用 # 开头。部分站长会在注释中使用中文,若编码不正确,可能导致解析异常。
一份稳妥的配置流程应包含以下步骤:
一个实际案例:某电商站点曾将 Disallow: /cart/ 误写为 Disallow: /car/,导致所有以“car”开头的分类页面在一周内抓取量骤降。这类问题往往在流量下跌后才被察觉,因此事前的仔细核对尤为重要。
不能完全阻止。它仅控制爬虫的抓取行为,若页面已通过其他途径被获取(如外部链接),仍可能被收录。彻底移除索引应使用 noindex 标签。
可能原因包括:爬虫在规则生效前已抓取该页面;规则路径书写错误,未正确匹配目标 URL;或者页面已收录但快照暂时未更新。建议先检查规则语法,再通过搜索工具提交索引清理请求。
不是。该协议属于行业自律规范,主流搜索引擎的蜘蛛通常遵守,但恶意爬虫、采集程序或某些 AI 训练工具可能会忽略规则。敏感数据仍需借助其他访问控制手段保护。
robots.txt 是一把双刃剑,用好了能提升抓取效率,用错了则可能伤及站点流量。建议从简单规则入手,写完后用专业工具验证,并养成每次修改后观察 Search Console 抓取统计的习惯。保持规则的最小化与清晰性,远比追求复杂的匹配技巧更可靠。