只要你的站点依赖搜索引擎带来流量,就绕不开根目录下那份名为 robots.txt 的文件。它通过几行规则指令,告知各搜索引擎的抓取程序:站内哪些内容应当被访问,哪些区域需要回避。设置得当,抓取预算会向高质量页面倾斜,新内容入索引的速度也会更理想;但如果语法有误或路径描述不清,可能导致整站抓取异常,甚至核心页面在结果中消失。这篇文章就把规则讲透,并帮你避开常见的配置失误。
这份文件服务的对象是爬虫程序,你可以在浏览器地址栏直接输入“域名/robots.txt”查看其内容。它的作用相当于路口引导,告诉爬虫哪些通道可以进入,但页面最终会不会出现在索引库中,并不由它决定。如果你希望某个网址彻底从搜索结果中移除,正确的手段是添加 noindex 元标签。也就是说,即便你在文件里禁用了一个路径,只要该页面存在较多外部链接,搜索引擎仍可能将其收录,只是展示的快照内容可能来自其他渠道。
同时需要明确,这套规则全凭蜘蛛自愿遵循。主流搜索引擎的爬虫基本会照做,但不少第三方采集工具和恶意脚本完全无视这些约束。凡是涉及用户隐私、交易订单、后台管理这类敏感目录,必须叠加访问验证、IP 白名单或防火墙等防护措施,不能把站点安全寄托于一份“君子协定”之上。
robots.txt 由多个规则块组成,每个块都必须以 User-agent 行开头。所有字段的写法统一为“名称: 值”,冒号采用英文半角符号,其后留一个空格是推荐的规范写法。虽然多数爬虫对格式有较好容忍度,但严格规范能减少日后解析异常的可能。
此行声明当前规则块面向哪类爬虫。若只想限定 Google 的主搜索蜘蛛,可写 User-agent: Googlebot;想统一约束所有搜索引擎的抓取程序,则用通配符 User-agent: *。你还可以建立多个规则块,对不同爬虫实施差异化策略,例如对谷歌放宽限制,对必应适当收紧。
Disallow 用于声明禁止访问的路径,Allow 用于声明允许访问的路径,两者通常搭配使用。有一个细节常被忽视:当 Disallow 冒号后面没有值(即 Disallow: 且无内容)时,表示解除全部限制,爬虫可抓取全站任意路径。当某个 URL 同时匹配多条规则时,搜索引擎遵循“最长匹配优先”的原则——路径越长越具体,优先级越高。例如同时设置 Disallow: /api/ 与 Allow: /api/public/,后者更为具体,因此 public 子目录下的内容会被放行。
Sitemap 指令用于声明站点地图的完整网址,通常置于文件末尾,方便爬虫快速发现全站内容。Crawl-delay 用于设定抓取的间隔秒数。这里要特别指出,Google 的爬虫并不支持 Crawl-delay 字段,它建议站长方在 Search Console 后台调整抓取速率,而非依赖此参数。
第一类问题集中在路径理解上。Disallow 后的值对应的是站点根目录下的路径片段,而非完整网址。比如 Disallow: /private/ 指的是屏蔽域名下 private 文件夹内的所有内容,而不是针对某个具体域名。有人习惯写上完整 URL,这通常会导致规则失效,达不到预期效果。
第二类问题是通配符的误用。标准语法中支持 * 表示匹配任意字符序列,$ 表示匹配结尾。例如 Disallow: /*.pdf$ 可以屏蔽所有以 .pdf 结尾的文件。但需注意,通配符的使用应以精简为原则,过于复杂的表达式容易引发解析歧义,建议保持规则简单直观。
第三类是大小写敏感问题。路径匹配是区分大小写的,/Product 与 /product 被视为两个不同路径。配置时需与服务器上真实的目录结构完全一致,避免因大小写不一致而导致屏蔽失效。
规则写好后并非万事大吉,验证环节必不可少。各搜索引擎的站长平台通常提供专门的 robots 测试工具,可以模拟抓取并查看实际生效的规则。提交前,建议先在本地对照几个典型页面的路径,确认预期命中还是放行。此外,不要频繁改动文件内容,每次变更都应在测试工具中确认无误后再上线。上线后定期查看抓取统计报告,观察核心页面的抓取量是否出现异常波动。
值得注意的还有缓存问题。多数搜索引擎会定期重新抓取该文件,但更新生效存在时间差。如果你修改了规则,希望尽快让爬虫感知,可以在站点地图中同步更新并提交,加快抓取调度频率。
严格来说,规则写错本身不会被当作作弊行为而受到惩罚,但其间接影响可能很严重。例如误屏蔽了整站路径,会导致蜘蛛完全无法抓取页面,造成新内容长时间不被收录,旧页面排名逐步下滑。这种情况属于技术性配置失误,及时修正并等待蜘蛛重新抓取即可恢复。
可以。你需要为特定蜘蛛(比如百度蜘蛛)配置一个放行的规则块,同时为 User-agent: * 配置全站禁止的规则块。但这样做会使站点对其他搜索引擎不可见,通常只适合开发环境或内部测试场景,不建议在生产环境使用。
按最长匹配优先原则处理。哪个规则的路径字符串更长、描述更具体,哪条就优先生效。若路径长度完全一致,则以 Allow 为优先。你可以利用这一特性,先屏蔽一个目录,再单独放行其中的某个子文件或子目录。
配置 robots.txt 是一项需要细心对待的基础工作。建议你现在就检查根目录下的文件,确认路径写法与服务器目录一致,并利用站长工具的测试功能核实规则效果。同时把敏感目录的权限控制从文件本身扩展到服务端验证,这才是完整的防护方案。规则应保持简单明了,配合定期的抓取数据检查,才能让搜索引擎的爬虫高效地为你服务。