网站的根目录里往往躺着一个不起眼的纯文本文件,名字叫 robots.txt。它的作用相当于给搜索引擎的爬虫递上一份"浏览须知",告诉对方哪些页面欢迎光临、哪些区域请勿入内。设置得妥当,抓取预算就能集中花在刀刃上,新页面的收录速度也有机会加快;而一旦写错,轻则影响收录效率,重则可能导致整站权重受损,甚至重要页面从索引里消失。接下来的内容会带你一步步弄懂它的语法逻辑,并指出那些最容易被忽视的坑。
robots.txt 的唯一合法存放位置是网站根目录,对应访问地址就是「你的域名/robots.txt」。需要明确的是,它管理的只是爬虫的"抓取"动作,并不直接决定页面能不能被"收录"。假如你希望某个页面彻底从搜索结果中消失,正确做法是在那个页面上加入 noindex 标签——如果只靠 robots.txt 屏蔽抓取,页面很可能因为蜘蛛始终读不到内容,而被一直卡在"已发现但未索引"的尴尬状态。
同时也要清醒认识到:这份文件对爬虫来说只是君子协定。Google、Bing 这类主流搜索引擎的蜘蛛会认真遵守,但恶意采集脚本通常对此视而不见。凡是涉及用户隐私、订单详情或后台管理功能的目录,必须额外叠加登录验证、IP 白名单之类的硬性防护,绝不能指望用 Disallow 规则来保住敏感数据。每一次改动文件之后,建议人工复核一遍所有路径,防止因为笔误把不该公开的目录暴露出去。
整个 robots.txt 文件由若干组规则构成,而每一组都必须以 User-agent 字段开头。字段名与值之间使用英文冒号加空格进行分隔,字段名统一采用大写字母,这样既能避免格式歧义,也能减少兼容性问题。
这个字段用于指定当前这组规则对哪个爬虫生效。例如「User-agent: Googlebot」只管谷歌蜘蛛,「User-agent: Bingbot」只管必应蜘蛛。想对全部搜索引擎生效,就用通配符写法「User-agent: *」。同一个文件里可以为不同蜘蛛分别建立规则组。当某个爬虫同时匹配到多组规则时,主流搜索引擎遵循的是"最长匹配优先"原则——路径写得更具体的那组规则,拥有更高优先级。
Disallow 用来声明禁止抓取的路径前缀,Allow 则用来声明允许抓取的路径前缀。留空不写值,即「Disallow:」(后面什么都不写),代表清除全部限制,效果等同于允许蜘蛛抓取整个网站。当 Allow 和 Disallow 的规则发生冲突时,以路径更长的一方为准。比如同时存在「Disallow: /api/」和「Allow: /api/public/」,那么 /api/public/ 目录下的资源会被正常放行,不受前一条 Disallow 影响。书写路径时建议统一采用根目录相对路径写法,并且注意带上末尾斜杠,能明显减少歧义。
Sitemap 字段用来声明站点地图的完整 URL,通常放在文件末尾,方便爬虫快速获取内容清单。Crawl-delay 用来指定爬虫两次抓取之间的间隔秒数,但需要特别留意:谷歌早已公开声明完全忽略这条指令;假如确实需要控制 Googlebot 的抓取频率,正确渠道是去 Search Console 后台的"抓取速率设置"进行调整。Bing 等其他搜索引擎仍然会读取 Crawl-delay,所以保留它作为参考配置并无不妥。
下面列几种常见需求的标准格式。实际使用时,按需替换对应路径即可,注意每条指令各占一行,不要在行尾多加空格。
在实际配置时要注意,Allow 和 Disallow 的优先级判断并不是看谁出现在前面,而是完全依赖路径前缀的匹配长度。换句话讲,如果两条规则作用在同一路径上,长路径规则会胜出。还有一个常见误区是试图用 Disallow 屏蔽某个具体页面,却忘了页面上还有其他入口链接,蜘蛛仍然可能通过外部引用抓到该页面。想让某个页面从搜索结果中彻底消失,应该考虑使用 noindex 标签配合 robots.txt 双管齐下。
即便掌握了语法,实践中的失误依旧频发。这里整理了几个最常见的踩坑场景,供你逐条对照检查。
每次改动 robots.txt 之后,不建议直接凭感觉认为没问题。一个靠谱的检查流程大致包括以下几个步骤,按顺序执行即可。
此外,将 Sitemap 地址写入 robots.txt 文件末尾,有助于缩短蜘蛛发现新内容的周期,尤其适合站点结构经常变动的网站。别忘了在文件开头用一行注释标明改动日期和用途,方便后续维护者理解历史变更。
通常不会"直接"降权,但可能引发间接的负面影响。比如误屏蔽了首页或重要目录,会让爬虫无法读取内容,长期下来页面的抓取频率与收录率都会下降,进而影响SEO 表现。更严重的状况是误放行了敏感目录,给后续内容安全带来隐患。
最常见的原因有两个:一是规则路径写得不够长,没有与真实路径形成精确匹配;二是其他组规则里也有 Allow 指令覆盖了这条 Disallow。另外,请确认你是按「最长匹配优先」原则来设计规则的,必要时可借助 Search Console 的测试工具直接验证。
robots.txt 阻止的是"抓取",noindex 标签阻止的是"收录"。如果你想临时让蜘蛛少抓一些低价值页面,用 robots.txt 够用;如果你想永久让某个页面从搜索结果中消失,正确方式是保留该页面可被抓取状态,同时加上 noindex 标签,否则可能出现"既不可见又无法快速移除"的状况。
robots.txt 看起来只是一份简单的文本文件,但它的语法细节和边界行为决定了很多 SEO 项目的成败。建议每次改动前先写清楚意图,改动后用工具验证,并持续观察抓取报告的数据变化。把这份文件当作一份需要定期维护的工程文档来对待,而不是改完就抛在脑后。记住一条底线:它只是一个君子协定,真正的数据安全防护永远要靠后端权限和访问控制来实现。