爬虫访问站点时,第一眼看到的往往就是根目录下那份名为 robots.txt 的纯文本文件。它的职责很明确:告诉搜索引擎哪些内容欢迎抓取,哪些区域应绕道而行。配置得当,既避免了后台、测试页等私密内容被收录,又能让服务器的抓取资源集中花在刀刃上。
robots.txt 必须放置在站点根目录,即通过 yourdomain.com/robots.txt 直接访问。文件需以 UTF-8 编码保存,每条指令独占一行,并留意路径大小写敏感的特性。
一份完整的配置通常由以下关键字段构成:
下面是一个典型配置样例:
User-agent: *
Disallow: /private/
Allow: /private/shared/
Sitemap: https://yourdomain.com/sitemap.xml
该配置意即:全站爬虫可入,/private/ 目录整体拒绝访问,唯独其下的 /shared/ 子目录放行。必须留意的是,Allow 指令并非所有爬虫都识别,若遇不识别的情况,更严格的 Disallow 仍会占据上风。
不同类型的站点,抓取诉求截然不同。下面列举三种高频需求及对应的规则逻辑。
对于以收录为核心目标的内容站或新站,通常期待爬虫彻底放开访问。此时只需声明一个空 Disallow:
User-agent: *
Disallow:
删掉 Disallow 这一行也能起相同作用。这里最常见的手误是填成 /,一旦出现,所有爬虫将停下脚步,收录即刻中断,务必核对。
若出于隐私或流量安排,想单独谢绝某个引擎,可针对其爬虫名单独设定规则:
User-agent: Baiduspider
Disallow: /
此规则仅作用于百度爬虫,Google、Bing 等其余引擎不受丝毫影响。撰写前务必从官方文档核实爬虫的准确名称,常见如 Googlebot、bingbot、Sogou web spider 等,名称写错规则即失效。
当站点混合了公开页面与受限内容,可采用分区放行策略。先禁止整体目录,再逐条放行需要被索引的资源:
User-agent: *
Disallow: /content/
Allow: /content/featured/
Allow: /content/open/
这样既保证了核心内容正常收录,又避免了非必要页面耗尽抓取预算。需要注意的是,Allow 规则的优先级在支持它的引擎中高于 Disallow,但并不通用的特性仍然要求做好兼容预案。
在长期的配置实践中,有一批特别容易踩中的坑,值得单独说明。
robots.txt 至多是一份"君子协定",它只做善意提醒,不具备强制力。某些恶意爬虫或工具会直接忽略该文件,你的隐私数据仍可能被获取。凡是真正要保密的文件,应当靠登录验证、IP 白名单等措施来防护,而不是单纯依赖 robots.txt。
若你的后台路径是 /admin/,却在 robots.txt 中只禁止了 /private/,那么后台依然可能被抓取。务必在根目录文件里将每个需要保护的路径逐一列出,同时检查是否有无意的目录层级遗漏。
多数人误以为 Disallow 永远优先于 Allow。实际上,Google 等支持 Allow 的引擎会采用最长匹配原则——路径前缀匹配越长者优先。因此若想放行某个深层次路径,必须在规则中写全它的完整前缀,否则更短更广的 Disallow 仍会生效。
写完配置文件后,建议按以下步骤逐一核验,避免留下隐患。
另外,文件不宜过大,尽量控制在几 KB 以内,过长会导致抓取效率下降。同时避免在文件内使用大量注释,保持轻薄简洁。
这通常是多因素叠加的结果。搜索引擎不会即时刷新抓取,重新抓取可能需要数天甚至数周。此外,若原文件被缓存,新规则需要一段时间才会覆盖。建议通过站长工具的抓取测试功能主动触发一次,并观察爬虫日志确认规则是否真正生效。
Google 规定文件大小上限约为 500 KB,超出的部分会被忽略。文件过大不仅拖慢爬虫的读取速度,还可能导致部分规则被丢弃。保持文件精简,只写必要的规则,是高效配置的基本原则。
仅靠 robots.txt 并不保险,因为它无法阻止恶意程序,也无助于清除已被索引的网页。对于确需彻底隐藏的内容,应配合 noindex 标签或登录限制。此外,若网页已被收录,在修改 robots.txt 后还应在站长工具中提交移除请求,才能更快清理旧快照。
配置 robots.txt 的前提是弄懂语法结构,核心在于明确你的抓取诉求,并在实践中避开常见误区。建议先从小范围测试开始,逐步验证规则效果,再推广到全站。每次修改后均借助站长工具复查,确保规则与预期一致。记住,robots.txt 是引导工具而非安全手段,真正的敏感内容始终需要更强的访问控制来兜底。