一、什么是Robots.txt?
Robots.txt是放置在网站根目录下的一个纯文本文件,它告诉搜索引擎爬虫哪些页面可以抓取,哪些页面不应该抓取。它遵循Robots Exclusion Protocol(机器人排除协议),是搜索引擎爬虫访问网站时第一个读取的文件。
需要注意的是,Robots.txt是一个"君子协定"——它告诉爬虫不要抓取某些页面,但并不能强制阻止。正规的搜索引擎(如百度、Google)会遵守这个协议,但恶意爬虫可能会忽略它。因此,Robots.txt不能替代安全措施,真正敏感的数据应该通过其他方式保护。
重要提示:Robots.txt只能阻止爬虫抓取页面,但不能阻止页面被收录。如果其他网站链接到了被Robots.txt禁止的页面,搜索引擎仍可能收录该URL(只是不会抓取内容)。要阻止收录,应使用noindex meta标签。
二、Robots.txt基本语法
Robots.txt的语法非常简单,主要由以下指令组成:
- User-agent:指定爬虫名称,*表示所有爬虫。例如:User-agent: Baiduspider(针对百度蜘蛛)、User-agent: *(所有爬虫)。
- Disallow:禁止抓取的路径。例如:Disallow: /admin/(禁止抓取admin目录下的所有内容)。
- Allow:允许抓取的路径,通常用于在禁止的目录中开放特定子目录。例如:Allow: /admin/public/。
- Sitemap:指定Sitemap文件的位置,帮助爬虫发现网站地图。例如:Sitemap: http://www.example.com/sitemap.xml。
- Crawl-delay:设置爬虫抓取间隔(秒),用于控制服务器负载。百度蜘蛛不支持此指令。
每条规则独立一行,用#号开头表示注释。不同的User-agent块之间用空行分隔。
三、常用配置示例
示例一:允许所有爬虫抓取所有内容
这是最简单的配置,适用于大多数网站:
User-agent: *
Disallow:
或者直接使用空文件,效果相同。
示例二:禁止抓取后台和敏感目录
User-agent: *
Disallow: /wp-admin/
Disallow: /wp-includes/
Disallow: /cgi-bin/
Disallow: /tmp/
Sitemap: http://www.example.com/sitemap.xml
示例三:针对不同爬虫设置不同规则
User-agent: Baiduspider
Disallow: /private/
Allow: /private/public/
User-agent: *
Disallow: /admin/
Disallow: /private/
Sitemap: http://www.example.com/sitemap.xml
四、常见错误与注意事项
- 误用Disallow: /:这是最常见的错误,它会禁止所有爬虫抓取整个网站!很多新手站长在测试时设置了这个规则,忘记删除就上线了,导致网站完全不被收录。
- 路径大小写敏感:大部分爬虫对路径大小写是敏感的,/Admin/和/admin/是不同的路径,建议统一使用小写。
- Robots.txt位置错误:必须放在网站根目录下(如example.com/robots.txt),放在子目录中无效。
- 用Robots.txt保护敏感数据:Robots.txt是公开可见的,任何人都能查看。不要用它来"隐藏"敏感信息,真正的敏感数据应使用密码保护。
- 没有设置Sitemap指向:在Robots.txt中添加Sitemap路径,有助于爬虫快速发现网站地图。
五、Robots.txt验证与测试
在修改Robots.txt后,建议使用以下方法验证配置是否正确:
- 百度站长平台Robots检测工具:登录百度站长平台,在"数据引入"中提交Robots.txt地址进行检测。
- Google Search Console:在"设置"中的robots.txt报告里进行测试,可以模拟爬虫的抓取行为。
- 在线工具:使用Robots.txt Tester等在线工具快速验证语法。
- 手动检查:在浏览器中访问 http://你的域名/robots.txt,确认文件内容正确。
Robots.txt虽然简单,但配置错误可能导致严重后果。建议在每次修改后都进行验证,确保不会意外阻止搜索引擎对重要页面的抓取。一个好的Robots.txt配置能让爬虫更高效地抓取有价值的内容,同时避免抓取无意义的页面,提升网站的抓取效率。