当搜索引擎爬虫访问你的站点时,它首先做的往往不是抓取网页,而是请求根目录下的 robots.txt 文件。这个幕后"指挥棒"通过简单的文本协议,告诉爬虫哪些页面可以抓取、哪些路径必须回避。一套合理的 robots.txt 规则,既能保护后台数据和敏感文件不被收录,又能减少无意义的爬取请求对服务器造成的压力,让搜索引擎的精力更集中地投放到核心内容上。
robots.txt 文件必须放置于网站根目录,例如 https://yourdomain.com/robots.txt。文件编码推荐使用 UTF-8,每条规则独占一行,且路径区分大小写。一个完整的 robots.txt 通常包含以下核心字段:
除了上述字段,你还可以在文件末尾增加 Sitemap 行,声明站点地图的地址。来看一个典型的配置示例:
User-agent: *
Disallow: /admin/
Allow: /admin/public/
Sitemap: https://yourdomain.com/sitemap.xml
这段规则的意思是:所有爬虫都能访问网站,但 /admin/ 目录被排除在外;其中 /admin/public/ 这个子目录又被单独放行。这里有一个常见的认知误区——Allow 并非万能指令。如果爬虫不认 Allow(比如某些小众蜘蛛),它只会遵循 Disallow,原本想开放的子目录反而会被挡住。
网站所处的阶段和目标不同,robots.txt 的写法也应有差异。以下是三种最常见的应用场景及其推荐写法。
如果你的网站是内容平台,或者刚上线需要加速收录,通常愿意让爬虫抓取所有页面。此时只需把 Disallow 的值留空:
User-agent: *
Disallow:
也可以直接省略 Disallow 字段,效果等同于允许全部抓取。这里最危险的错误是误写成 Disallow: /,一旦出现,所有爬虫都会中止抓取,网站收录会立刻瘫痪。自检时,务必确认冒号后是空白,而不是斜杠。
当你不想让某个搜索引擎收录站点时,可以只对该爬虫设置阻断规则,避免波及别的搜索蜘蛛:
User-agent: Bingbot
Disallow: /
此配置会让 Bingbot 完全无法访问,而 Googlebot、百度蜘蛛等其他爬虫不受影响。需要留意的是,各大搜索引擎的爬虫名称不同,比如百度的蜘蛛叫 Baiduspider,Yandex 的叫 YandexBot,写错名称会导致规则不生效。
有的站点希望抓取某个目录下的部分内容,这时候就可以组合使用两条指令。前提是目标爬虫支持 Allow 字段,否则规则会失效。一个稳妥的做法是先写宽泛的 Disallow,再写具体的 Allow 规则,例如:
User-agent: Googlebot
Disallow: /downloads/
Allow: /downloads/sample.pdf
这条规则只针对 Googlebot,禁止整个 /downloads/ 目录,但例外允许它抓取 sample.pdf 这个文件。如果你不确定爬虫是否支持 Allow,可以在搜索引擎官方站长工具里查看抓取测试结果。
robots.txt 的语法看似简单,但实际操作中很容易出现疏漏。以下是几个常见的错误及应对建议:
一个常见误区是以为加上 Disallow 就能防止文件被下载。实际上,只要文件有固定 URL,任何人都能直接访问,robots.txt 只是阻止搜索引擎收录,并不提供安全防御。
此外,修改 robots.txt 后并非立即生效,爬虫需要重新抓取该文件才会更新规则,这个过程可能要数天时间,不要频繁改动。
写好 robots.txt 只是开始,验证它是否按照预期工作才是关键。操作步骤如下:
如果发现规则未生效,优先检查文件大小是否超过 500KB(Google 限制的读取上限),以及文件是否被放置在正确的根目录位置。
并非如此。Allow 指令最初由 Google 提出并支持,多数主流搜索引擎(如 Bing、百度)也逐步兼容,但一些小众爬虫可能仅解析 Disallow。若不确定,建议将允许规则写在 Disallow 之前,并定期查看搜索引擎站长工具中的抓取统计来验证效果。
可以做到,但效果依赖于爬虫遵守协议。robots.txt 的本质是告知,不是强制。如果其他网站引用了你的 URL,搜索引擎仍可能展示标题和摘要,只是无法抓取正文。想要彻底从索引中移除页面,更可靠的手段是使用 noindex 元标签。
通常需要等待爬虫重新抓取该文件,这个周期从几小时到几天不等。建议修改后主动在站长工具中提交 robots.txt 文件,可以加快更新速度。频繁改动反而会让搜索引擎降低抓取频率,尽量一次性配置到位。
robots.txt 是网站与搜索引擎之间的沟通工具,用好了能显著提升抓取效率,用错了可能带来收录停滞的麻烦。建议你从全站开放开始,配合 Sitemap 声明,然后再根据需求逐步加入目录排除规则。每次改动前备份原文件,改动后用站长工具验证,确保每一步都在掌控之中。对于真正敏感的目录,务必叠加服务器级的访问控制,不要把 robots.txt 当成安全网。