每个网站运营者迟早都要面对 robots.txt 这个文件。它存放在站点根目录,用简单的几行文字告知搜索引擎的爬虫程序,站内哪些目录可自由访问,哪些区域需要绕行。设置得当,搜索引擎会优先抓取重要页面,新内容的收录效率显著提升;一旦语句错误或路径写错,则可能导致整站抓取异常,甚至出现页面被降权的情况。下面我们就将这份文件的核心语法和那些容易忽略的细节逐一说明。
robots.txt 的服务对象是爬虫程序,你完全可以尝试在浏览器地址栏输入“域名/robots.txt”直接查看内容。它更像一个路口引导员,规划出爬虫可以通行的路线,但至于页面最终是否能进入搜索索引,则不在它的职责范围内。若想让某个页面彻底消失于搜索结果,正确的途径是采用 noindex 标签来标记。该协议只影响爬虫的抓取行为,对已经抓取到的内容是否被编入索引,并没有决定权限。举例来说,一个被 robots.txt 屏蔽的页面,由于外部链接众多,搜索引擎依然可能将其收录,只是快照内容或许来自其他来源。
同时需要意识到,这套规则完全依赖爬虫的自律。主流搜索引擎的蜘蛛通常会遵守约定,然而大量用于采集的脚本和第三方爬取工具并不会理会这些条文。凡是涉及用户隐私、订单信息、管理后台等敏感区域,务必要叠加登录验证、IP 白名单或防火墙等手段,不能将网站安全完全寄托于这样一份“君子协定”之上。
robots.txt 文件由若干规则块构成,每个规则块必须以 User-agent 字段开头。所有字段均采用“名称: 值”的格式,冒号需使用英文半角符号,其后跟一个空格属于规范写法。尽管多数爬虫对格式有一定容忍度,但规范的书写有助于避免未来出现难以排查的解析问题。
此命令用以声明当前规则组所约束的具体爬虫。若只想限制 Google 的搜索爬虫,可写入 User-agent: Googlebot;若要统一约束所有搜索引擎的爬虫,则使用通配符 User-agent: *。你可以拆分成多个规则组,对不同爬虫实施差异化策略,比如对某搜索引擎开放更多权限,而对另一搜索引擎加以限制。
Disallow 用于声明禁止抓取的路径,Allow 则用于声明允许访问的路径,二者通常搭配出现。有个细节常被忽视:当 Disallow 字段后为空(即 Disallow: 且无任何值),表示撤销全部限制,爬虫可抓取站内任意内容。当某个 URL 同时契合多条规则时,搜索引擎默认采纳“最长匹配优先”的原则——路径越长越具体,优先级就越高。例如同时存在 Disallow: /api/ 与 Allow: /api/public/ 两条规则,由于后者路径更为具体,因此 public 子目录下的内容将被允许访问。
Sitemap 指令用于声明站点地图的完整 URL 地址,便于爬虫快速掌握全站内容结构,一般放置在文件末尾位置。Crawl-delay 指令用于设定爬虫每次抓取之间的间隔时长,单位为秒。这里需要特别说明,Google 的爬虫并不支持此指令,官方推荐通过 Search Console 后台来调整抓取频率,而非依赖该字段。
首当其冲的误区在于路径理解。Disallow 后的值对应的是网站根目录下的路径部分,而非完整的 URL 链接。比如要屏蔽 example.com/admin/ 这个地址,只需写入 Disallow: /admin/ 即可。其次,通配符的使用有限,星号 (*) 默认匹配任意长度的字符序列,美元符号 ($) 则匹配 URL 的结尾。然而不同搜索引擎对通配符的支持程度并不统一,在核心规则中尽量少依赖通配符,优先使用明确的目录路径更为安全。最后是大小写问题,robots.txt 的路径匹配是区分大小写的,/Product 与 /product 会被视为两个不同的地址,写在规则里时必须与实际路径完全一致。
为避免上线后出现抓取异常,建议按下述步骤操作。第一步,先梳理站点结构,明确哪些目录需要放行,哪些必须屏蔽,例如后台路径、测试页面或包含重复内容的参数地址。第二步,按照规范的字段格式编写规则,并将文件命名为 robots.txt 后上传至站点根目录。第三步,在浏览器中访问 域名/robots.txt,确认文件内容已正确展示且无乱码。第四步,利用搜索引擎官方提供的抓取测试工具来模拟抓取,检查规则是否生效、有无语法警告,发现问题及时修改后再重新提交。
这通常是正常现象。robots.txt 仅阻止爬虫抓取新内容,对于已经收录且外部链接较多的页面,搜索引擎依然可能将其保留在索引中,只是无法更新快照或抓取新内容。若希望页面彻底在搜索结果中移除,需使用 noindex 标签并结合提交移除请求来完成。
建议优先使用具体的路径前缀来限制范围。若确需模糊匹配,例如要屏蔽所有以问号开头的动态参数地址,可使用 Disallow: /*?* 的写法。但务必先在官方抓取测试工具中验证实际效果,因为部分爬虫对通配符的解析不够全面,可能造成误拦截。
需要。由于 robots.txt 是基于域名的,每个域名都需要在各自的根目录下放置独立的文件。例如 m.example.com 需要单独部署配置。若两者规则不同,务必分别检查,避免因忘记配置导致移动端页面抓取异常。
robots.txt 虽小,却是站点与搜索引擎之间沟通的初始桥梁。它既决定了爬虫的访问范围,也直接影响着网站的抓取预算分配。建议你在调整规则前,先使用抓取测试工具模拟当前配置,观察返回的代码状态。修改后持续关注搜索控制台中的抓取统计数据和收录报告,以便及时修正错误。若规则长期未变,也应在网站结构改版时重新审视一遍,确保新路径未被意外屏蔽,这样才能保障站点在搜索引中的健康表现。