是一个放在网站根目录下的文本文件,它的核心功能是礼貌地告诉合规的网络爬虫(或机器人)哪些页面或文件可以抓取,哪些不应该抓取。
核心功能详解
- 指导合规的爬虫
- 它主要针对像 Googlebot(谷歌爬虫)、Baiduspider(百度爬虫)这样的搜索引擎爬虫。
- 它是一个“君子协定”,没有强制约束力。一个恶意的、不守规矩的爬虫完全可以无视它。它的有效性依赖于爬虫方的自觉遵守。
- 主要应用场景
- 避免抓取敏感区域:例如网站的管理后台 (/admin/)、登录页面 (/login/)、临时测试页面等,这些页面你不想被搜索引擎索引和公开显示。
- 节省服务器资源和爬取预算:阻止爬虫抓取无价值的页面,如站内搜索结果页、打印页面、重复内容页面等,可以将有限的服务器资源和搜索引擎的“爬取配额”留给更重要的页面。
- 保护私有文件:防止搜索引擎索引网站上的敏感文件,如 PDF、Zip 等(但请注意,这不能隐藏文件,如果文件有公开链接,别人还是能访问,只是不会被搜索引擎收录)。
- 优化网站性能:对于一些资源消耗大的页面(如复杂的筛选页面),禁止爬虫抓取可以减轻服务器压力。
- 重要限制(它不能做什么)
- 不能阻止恶意爬虫:无法防止黑客、抓取工具或垃圾邮件发送者抓取你的网站。
- 不能隐藏网页:如果一个页面可以通过公开链接访问,即使用 robots.txt 禁止抓取,它仍然可以被访问。要真正阻止访问,需要使用密码保护或服务器端权限控制。
- 不能作为安全工具:绝对不要用它来隐藏密码、个人信息等敏感数据。它反而会告诉别人这些文件的位置。
- 不能保证不被索引:即使阻止抓取,如果页面的链接出现在其他网站上,搜索引擎仍然可能知道这个页面的存在并将其显示在搜索结果中(通常只显示网址,没有描述)。要完全阻止索引,需要使用 <meta name=”robots” content=”noindex”> 标签或 X-Robots-Tag HTTP 头。
基本语法和指令
robots.txt 文件由一条或多条“记录”组成。每条记录针对一个特定的爬虫代理(User-agent),并包含一系列指令(Allow, Disallow)。
- **User-agent:** (必选)
- 指定这条规则适用于哪个爬虫。
- User-agent: * 表示规则适用于所有合规的爬虫。
- User-agent: Googlebot 表示规则仅适用于谷歌的网页爬虫。
- **Disallow:** (核心指令)
- 指定不希望爬虫访问的路径。
- Disallow: /admin/ 表示禁止爬虫访问 /admin/ 目录及其下的所有内容。
- Disallow: (空值)表示允许抓取整个网站。这是默认行为。
- **Allow:** (辅助指令)
- 在一条被禁止的路径中,特别允许抓取某个子路径。
- 通常与 Disallow 配合使用,Allow 指令的优先级更高。
- 例如:Disallow: /folder/ 但 Allow: /folder/public/,表示禁止 /folder/ 目录,但允许抓取其中的 /folder/public/ 子目录。
- **Sitemap:** (推荐使用)
- 指定网站地图(sitemap.xml)的位置,帮助爬虫更有效地发现和索引你的重要页面。
- 这条指令可以放在文件的任何位置,通常放在开头或结尾。
- ***** (通配符)
- 匹配任何字符序列。
- **$** (结束符)
- 匹配URL的结束。
常见示例
- 允许所有爬虫抓取整个网站
User-agent: * Disallow:
或者直接留空,或者返回 404 状态码。
- 禁止所有爬虫抓取任何内容
User-agent: * Disallow: /
这会让你的网站在搜索引擎中“消失”。
- 禁止所有爬虫抓取特定目录
User-agent: * Disallow: /admin/ Disallow: /tmp/ Disallow: /logs/
- 禁止抓取特定类型的文件
User-agent: * Disallow: /*.pdf$ Disallow: /*.jpg$
禁止抓取所有 PDF 和 JPG 文件。
- 针对特定爬虫设置规则
User-agent: Googlebot-Image Disallow: / User-agent: * Disallow: /private/
这段规则表示:禁止谷歌图片爬虫抓取任何图片,但允许其他所有爬虫抓取网站,除了 /private/ 目录。
- 使用 Allow 和 Disallow 组合
User-agent: * Disallow: /folder/ Allow: /folder/public/
禁止抓取 /folder/ 目录,但允许抓取其中的 /folder/public/ 子目录。
最佳实践和注意事项
- 位置必须正确:文件必须位于网站的根目录下,例如 https://www.example.com/robots.txt。
- 使用小写文件名:虽然大多数服务器不区分大小写,但使用全小写的 robots.txt 是最稳妥的做法。
- **注意斜杠 /**:路径通常以斜杠开头。
- 每行一条指令:指令必须各自独立成行。
- 使用搜索引擎工具验证:Google Search Console 和 Bing Webmaster Tools 都提供了 robots.txt 测试工具,可以检查你的文件是否有语法错误或意外阻止了重要页面。
- 谨慎使用通配符:过于宽泛的规则可能导致意外屏蔽重要页面。
总结
robots.txt 是网站站长与网络爬虫之间沟通的一个重要工具,主要用于优化搜索引擎爬虫的抓取效率、节省服务器资源、并保护不希望被公开索引的内容。但它是一个“建议”而非“命令”,绝不能将其用于保护敏感信息的安全。