当搜索引擎的爬虫初次造访你的网站时,它首先会寻找根目录下的 Robots.txt 文件,以此了解站点的抓取边界。这份纯文本文件扮演着“交通指挥员”的角色,既保护敏感数据不被收录,又能引导爬虫将有限的抓取配额集中在高价值页面上,从而优化站点在搜索结果中的表现。
这份文件本质上是一组按特定顺序排列的指令集,其语法简洁,没有复杂的嵌套结构。每一组指令都以声明爬虫身份开始,紧跟着的是若干条具体的行为约束。
理解以下核心字段,你就掌握了 80% 的配置技巧:
举例来说,下面的配置表示对所有爬虫完全开放,并告知其地图位置:
User-agent: *
Disallow:
Sitemap: https://example.com/sitemap.xml
在真实项目中,配置 Robots.txt 的核心在于平衡“开放”与“保护”。下面分享几个高频场景的具体写法。
当站点处于搭建阶段或进行重大改版时,为了避免被搜索引擎提前收录,可以采用全站封锁策略:
User-agent: *
Disallow: /
这里有一个容易被忽略的细节:该指令仅阻止“未来的”抓取,并不能让已经存在于搜索结果中的页面快速消失。若需要从索引中移除旧页面,应前往对应搜索引擎的站长平台提交删除请求。另外,此配置仅影响爬虫,不会对正常访客造成任何影响。
绝大多数网站无需全站封锁,而是要精准拦截后台管理界面、购物车、用户中心或内页搜索结果等低价值、高重复的区域。假设需要同时屏蔽 /admin/ 和 /user/ 两个目录:
User-agent: *
Disallow: /admin/
Disallow: /user/
在此场景下,不建议画蛇添足地加上 Allow: / 指令,因为未声明的路径默认就是允许抓取的。贸然添加反而可能因不同爬虫对该指令的解析差异,引发不可预期的抓取冲突。
不同搜索爬虫的抓取频率和资源消耗各异,你可以据此制定差异策略。比如希望 Googlebot 全站抓取,但对于其他爬虫则限制其访问图片存储目录以节省带宽:
User-agent: Googlebot
Allow: /
User-agent: *
Disallow: /images/
Disallow: /css/
有时你希望封锁整个目录,但保留其中个别页面的可访问性。例如阻止所有爬虫访问 /library/ 目录,但唯独允许收录其中的 /library/public-report.pdf 文件:
User-agent: *
Disallow: /library/
Allow: /library/public-report.pdf
需要留意的是,Allow 指令的优先级高于 Disallow,且匹配遵循最长的路径前缀原则。然而这一规则在 Yandex 等少数爬虫中并不适用,因此跨搜索引擎的兼容性需要谨慎测试。
在实际操作中,看似正确的配置往往暗藏隐患。以下几点值得格外留意:
修改 Robots.txt 文件后,爬虫通常不会立即感知变化。抓取频率高的爬虫(如 Googlebot)可能在几小时内重新读取,而有些爬虫则需要数天时间才会刷新。如果希望尽快验证修改效果,可以前往对应搜索引擎的站长后台资源提交“抓取”请求,或者利用“网址检查”功能模拟抓取以确认当前返回的内容。此外,保持文件大小在 500KB 以内,并限制规则组数量在合理范围内,有助于避免部分爬虫因数据集过大而解析截断。
不能。Robots.txt 阻止的是爬虫“抓取”页面内容,而非“收录”过程。如果页面已被其他网站链接,搜索引擎仍可能在不抓取正文的情况下仅依据链接信息索引该 URL。若要彻底禁止页面出现在搜索结果中,应使用 meta robots 标签中的 noindex 指令。
这取决于搜索引擎自身的刷新机制。Disallow 规则会让爬虫停止抓取新内容,但已经抓取并收录的网页通常会继续保存在索引中,直到自然失效或被搜索引擎手动清除。建议在站长平台使用“删除 URL”工具加速这一过程,同时也可以使用 410 状态码表明资源已永久性删除。
并非如此。Allow 指令长期以来是 Google 的专有扩展,虽然 Bing 等爬虫后来也宣布支持,但仍有部分小型或特定区域的搜索引擎(如早期的 Yandex 部分版本)并不识别该指令。在面向多市场、多语言站点的场景中,应尽量避免依赖 Allow 指令,或者前提做好跨引擎的充分测试。
Robots.txt 文件虽小,却深刻影响一个网站的抓取效率与搜索表现。配置前先明确目标:是保护隐私、节省带宽,还是引导权重集中?配置完成后务必在官方工具中逐条验证。最后建议将这份文件纳入日常运维的监查清单,尤其是在每次站点结构调整后重新审视一遍,让爬虫始终沿着你预设的路径高效前行。