什么是 robots.txt?
robots.txt(又称“爬虫协议”或“机器人协议”)是一个存放在网站根目录下的纯文本文件,它的作用是告诉搜索引擎的爬虫(如 Googlebot, Baiduspider 等)网站中哪些页面可以抓取,哪些页面不能抓取。

重要提示:
robots.txt是一个建议,而不是一个强制命令,遵守良好爬虫协议的爬虫会遵循它,但恶意爬虫或不良爬虫完全可以忽略它。- 它不能阻止页面被收录,如果你不希望某个页面被搜索引擎收录,应该使用
noindex元标签或通过服务器配置进行身份验证保护。 - 它是一个公开的文件,任何人都可以通过
https://www.yourdomain.com/robots.txt查看你的配置。
robots.txt 的基本语法
robots.txt 文件由一个或多个“记录组”(Record)构成,每个记录组包含两行或更多行。
User-agent (必需)
这行指定了规则适用于哪个爬虫。
- 代表所有爬虫。
Googlebot:仅适用于 Google 的爬虫。Bingbot:仅适用于微软必应的爬虫。Baiduspider:仅适用于百度的爬虫。
你可以为一个 User-agent 指定多条规则,也可以为多个 User-agent 指定相同的规则。

Disallow (可选)
这行告诉指定的爬虫不要抓取哪个 URL 路径。
- 禁止抓取整个网站。
/private/:禁止抓取/private/目录下的所有页面。/secret-page.html:禁止抓取/secret-page.html这个特定页面。
Allow (可选)
这行告诉指定的爬虫可以抓取哪个 URL 路径,它通常用于在 Disallow 某个大范围路径后,允许其中的一个子路径。
/private/public/:虽然/private/被禁止,但允许抓取/private/public/目录。
Sitemap (可选)
这行用于指定网站的 XML 站点地图(Sitemap)的位置,这可以帮助爬虫更高效地发现你网站的所有页面。
Sitemap: https://www.yourdomain.com/sitemap.xml
书写规则与最佳实践
文件格式和位置
- 文件名:必须是
robots.txt(全小写)。 - 位置:必须存放在网站根目录下(
https://www.yourdomain.com/robots.txt)。 - 编码:建议使用
UTF-8编码。
大小限制
robots.txt 文件的大小通常不应超过 500 KB,如果文件过大,搜索引擎可能无法完全处理它,对于大型网站,建议使用 robots.txt 生成工具来优化。

规则的优先级
robots.txt 中的规则是自上而下执行的,后面的规则可以覆盖前面的规则。
通配符的使用
- 匹配任意字符序列(除路径分隔符 外)。
Disallow: /*.jpg:禁止抓取所有以.jpg结尾的文件。
- 匹配字符串的结尾。
Disallow: /*.php$:禁止抓取所有以.php结尾的文件。
注意:并非所有搜索引擎都完全支持通配符,Google 和 Bing 支持较好。
注释
使用 来添加注释,解释某条规则的用途。
# 这是注释,说明下面的规则禁止所有爬虫访问管理员区域 User-agent: * Disallow: /admin/
常见场景实例
场景1:允许所有爬虫访问整个网站
这是最简单的配置,适用于希望所有页面都被搜索引擎收录的网站。
User-agent: * Disallow:
或者,Disallow: 留空也表示允许所有访问。
场景2:禁止所有爬虫访问整个网站
如果你想暂时将网站从搜索引擎中移除,可以使用这个配置。
User-agent: * Disallow: /
注意:这并不能保证页面立即消失,已收录的页面需要搜索引擎重新抓取后才会被移除。
场景3:禁止所有爬虫访问特定目录或文件
禁止访问后台管理、用户数据、临时文件等目录。
User-agent: * Disallow: /admin/ Disallow: /private/ Disallow: /tmp/ Disallow: /login.html
场景4:只允许特定爬虫访问
只允许 Googlebot 访问,禁止其他所有爬虫。
User-agent: Googlebot Disallow: User-agent: * Disallow: /
场景5:针对不同爬虫设置不同规则
允许 Googlebot 和 Bingbot 抓取所有内容,但禁止其他爬虫。
# 允许 Google 和 Bing User-agent: Googlebot User-agent: Bingbot Disallow: # 禁止所有其他爬虫 User-agent: * Disallow: /
场景6:使用 Allow 规则(高级)
假设你禁止了 /private/ 目录,但其中的 /public/ 子目录是公开的。
User-agent: * Disallow: /private/ Allow: /private/public/
场景7:禁止抓取特定类型的文件
禁止爬虫抓取所有图片、PDF 和 JS 文件,以节省服务器带宽。
User-agent: * Disallow: /*.jpg$ Disallow: /*.png$ Disallow: /*.gif$ Disallow: /*.pdf$ Disallow: /*.js$
场景8:移动端和桌面端适配
如果你的网站有针对不同设备的版本,可以引导爬虫访问正确的版本。
User-agent: Googlebot Disallow: User-agent: Googlebot-Mobile Disallow: User-agent: * Disallow: /
这个配置告诉 Google 的桌面和移动爬虫可以抓取所有内容,但其他爬虫则被禁止。
验证 robots.txt
设置好 robots.txt 后,你需要验证它是否正确。
-
手动检查:
- 在浏览器中访问
https://www.yourdomain.com/robots.txt。 - 检查语法是否正确,规则是否符合你的预期。
- 在浏览器中访问
-
使用搜索引擎的站长工具:
- Google Search Console:在“robots.txt 测试器”中,你可以实时测试你的
robots.txt文件,并模拟不同爬虫的抓取行为,查看哪些 URL 会被允许或禁止。 - Bing Webmaster Tools:也提供了类似的
robots.txt测试功能。
- Google Search Console:在“robots.txt 测试器”中,你可以实时测试你的
常见错误
- 语法错误:拼写错误、缺少冒号、空格不正确等。
- 错误:
Useragent: *(缺少冒号) - 错误:
Disallow:/admin/(冒号后不应有空格,但通常也能被解析)
- 错误:
- 路径错误:路径以 开头或结尾不正确。
- 错误:
Disallow: admin(这只会禁止/admin这个文件,而不会禁止/admin/目录) - 正确:
Disallow: /admin/
- 错误:
- 忘记指定 Sitemap:这是一个好习惯,可以方便爬虫。
- 过度依赖
robots.txt:用它来保护敏感信息。robots.txt只是一个公开的建议,不能真正隐藏内容,要保护敏感数据,应使用服务器级别的访问控制(如密码保护)。
希望这份详细的指南能帮助你写出完美且高效的 robots.txt 文件!
