robots.txt 是部署在网站根目录的一个纯文本协议文件,作用是与搜索引擎爬虫沟通:哪些路径可以抓取,哪些路径应当跳过。它本身不影响排名,但如果配置正确,能显著提高抓取效率、加快新页面收录;一旦配置错误,可能导致重要页面迟迟不被索引,甚至整站抓取受限。本文从语法核心到常见误区,帮你避开那些容易忽略的细节。
首先要纠正一个普遍的认知偏差:robots.txt 不是安全工具。它只对遵守协议的合规爬虫起作用,恶意采集程序、非正规扫描器完全不会理会这里的规则。涉及用户隐私、后台登录、订单数据等重要内容,必须依赖密码验证、IP 白名单、访问控制等硬性手段,不要指望一个文本文件能挡住任何有目的性的访问。
其次,robots.txt 控制的是"抓取"这一前置步骤,而页面是否呈现在搜索结果中,是"索引"环节的事。假设你不想让某个页面出现在搜索里,仅靠 Disallow 往往不够——爬虫可能通过外部链接发现该页并收录。正确做法是同时使用 robots.txt 禁止抓取,并在页面头部加入 noindex 标签,两者配合才能有效阻止页面被搜索展示。
robots.txt 的内容由多个规则组构成,每组以 User-agent 开头,后接若干条 Allow 或 Disallow 指令。书写时字段名统一小写,冒号后保留一个空格,这样能最大限度避免不同解析器的兼容性问题。
User-agent 声明该规则组的目标爬虫。例如 User-agent: Googlebot 只对谷歌爬虫生效,User-agent: * 则匹配所有爬虫。你完全可以在同一文件中为不同搜索引擎配置差异化策略——比如对百度禁止某个目录,但对谷歌开放该目录。这种灵活性在多搜索引擎运营时非常实用,但也容易因规则交叉而产生意料外的行为,建议每个规则组之间保持清晰独立。
Disallow 定义禁止抓取的路径,Allow 定义允许抓取的路径。当同一条 URL 同时命中 Allow 和 Disallow 时,搜索引擎按最长匹配优先原则判断——路径字符串更长的那条规则胜出。举例:若文件中有 Disallow: /api/ 和 Allow: /api/public/,那么 /api/public/ 下的资源可正常抓取,而 /api/ 下的其他路径仍被禁止。
还有一个常被忽视的细节:Disallow 后留空表示解除所有限制。比如"Disallow: "(冒号后无内容)意味着该规则组对所有路径开放抓取,适用于全站公开的站点。值得注意的是,部分搜索引擎对空值处理略有差异,稳妥起见可在全站开放时直接省略 Disallow 行。
Sitemap 指令用于声明站点地图的完整 URL,可以帮助爬虫快速发现新页面,缩短链接探测周期。而 Crawl-delay 用于设定两次抓取间的间隔秒数,对低配服务器有一定保护作用。但必须清楚:不少搜索引擎不支持 Crawl-delay,且 Sitemap 指令更多是"提示"而非强制条款,不要过度依赖这两项来改变抓取行为。
当多个规则组作用于同一爬虫时,搜索引擎通常取最具体、最长的匹配规则作为最终裁决。例如同时存在 Disallow: /admin 和 Allow: /admin/,前者匹配 /admin 本身及 /admin/ 下的路径,后者匹配 /admin/ 开头的路径。对 /admin/login 而言,两个规则都可能命中,搜索引擎会以更长的字符串为准——如果 Allow 规则的路径更长,就可能放行。因此,书写时一定要意识到匹配的顺序并非按文件行数,而是按路径长度与通配符的综合计算结果。
另一个容易踩坑的点是通配符的使用。虽然 Google 支持 * 和 $ 等通配符,但百度等引擎对通配符的兼容性并不一致。建议在面向多引擎的 robots.txt 中尽量避免依赖通配符,改用明确的目录或文件路径,既减少歧义,也便于后续排错。若必须使用,最好在主流搜索引擎的站长工具中逐一测试验证。
实际运维中,不少站点因为一些细节处理不当而吃了亏。以下五个问题最具代表性,供你对照自检:
生效时间取决于各引擎的抓取周期,通常从几分钟到几天不等。谷歌、百度等主流搜索引擎会定期重新抓取该文件,但不会实时响应。若需加速,可在对应站长平台手动提交或请求重新抓取。
最简单的方式是只写一行 User-agent: *,不添加任何 Disallow 或 Allow 指令。也可以写 Disallow: 留空,但部分引擎对空值处理略有差异,省略 Disallow 行是更普适的选择。同时可以保留 Sitemap 指令,帮助爬虫发现新内容。
以最长匹配优先为原则,路径字符串更长的那条规则生效。例如 Disallow: /api/ 和 Allow: /api/public/ 同时存在时,/api/public/ 下的资源会被放行。如果两条规则路径长度一致,则按 Disallow 优先处理,但各引擎的具体实现可能存在差异,建议避免书写这种冲突规则。
robots.txt 的配置看似简单,实则藏着不少细节:它不负责安全,也不直接控制索引;语法上要谨记小写字段、空格规范,以及最长匹配优先的裁决逻辑;通配符与补充指令需谨慎使用,避免因兼容性问题导致意外后果。建议你每次修改后,都在各主流搜索引擎的站长工具中执行一次抓取测试,确认核心页面可正常访问。同时定期审查文件内容,删除过时规则,保持结构清晰。掌握这些要点,就能让 robots.txt 真正成为抓取效率的助力,而不是站点收录的绊脚石。