搜索引擎爬虫访问一个网站时,通常最先请求根目录下的robots.txt文件。这个纯文本文件相当于一份抓取许可说明,向爬虫清晰划定可抓取与禁止访问的区域。合理的配置不仅能让后台、测试页等内部文件远离搜索结果,还能引导爬虫将抓取配额用在核心内容上,提升收录效率。
robots.txt必须存放于网站根目录,比如 https://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这一行也行。最容易出错的地方是把Disallow的值误写成 /,一旦出现就会出现所有爬虫停止访问、收录全面中断的状况,务必反复核对。
出于流量分配或隐私保护考虑,只想拒绝某一家搜索引擎时,可单独为对应爬虫设立规则:
User-agent: Baiduspider
Disallow: /
这条规则仅影响百度爬虫,Google、Bing等其他搜索引擎不受任何影响。编写之前,建议查阅各引擎官方文档确认爬虫的确切名称,常见的有Googlebot、Baiduspider、bingbot等,写错名字规则将完全不生效。
大多数站点不希望在搜索结果中出现后台登录页、临时目录或用户中心这类内容。一种安全的做法是默认全站禁止,再逐一放行可公开的区块:
User-agent: *
Disallow: /admin/
Disallow: /tmp/
Disallow: /user/
这种方式既保护了敏感路径,又不会误伤正常的页面收录。注意目录名称与实际项目结构保持一致,同时避免在robots.txt中暴露含有明显特征的敏感路径命名,以防被别有用心的人利用。
robots.txt的真实维护难度往往不在语法本身,而在规则的组织逻辑,特别是当规则行数变多时容易陷入混乱。以下几点能帮你在日常维护中少走弯路:
实际运维过程中,以下三个误区最常见,且往往需要付出不小的代价才能发现。
robots.txt写入后并非即刻生效,尤其是在已有错误配置的情况下,搜索引擎需要一定时间重新读取新文件。因此,上线前后应当做好两道检查:
另外,修改robots.txt不会立即阻止已经被收录的页面继续出现在搜索结果中,即使页面因规则变化被限制抓取,历史索引仍可能短期存在,这是正常现象,不必焦虑。
区分。文件名必须严格为小写的 robots.txt,而且需放于根目录,写在子目录中不会生效。部分服务器支持大小写不敏感的文件系统,但在Linux等系统中R大写的Robots.txt等同无效。
不能。robots.txt只对遵守协议的爬虫有效,恶意爬虫根本不读取该文件。想有效拦截恶意流量,应使用服务器防火墙、IP封禁或User-Agent访问规则等手段处理。
不是。Allow指令目前主要被Google等少数搜索引擎支持,其他搜索引擎大概率无法识别。因此涉及Allow的规则只适合在对抓取精度要求极高的场景下使用,普通站点尽量用纯Disallow的组合实现目标。
robots.txt是管理爬虫抓取这项基础工作的重要工具,语法简单,但细节决定成败。建议每次改动前先备份旧文件,改动后用官方测试工具模拟抓取验证效果;当规则规模逐渐扩大时,定期梳理注释与分组,保持文件的可维护性。记住,它既不是安全机制,也不是流量控制的万能开关,它只负责向规范的爬虫传递清晰的边界信号。把这一点理解透彻,你的robots.txt就不会成为收录路上的绊脚石。