robots.txt 是一个放置在网站根目录的文本文件,它的作用是向搜索爬虫说明站点哪些内容可以被抓取。这个文件虽然小,但如果设置不当,轻则浪费爬虫抓取额度,重则导致整站无法被搜索收录。理清它的语法和匹配逻辑,是网站运营者必须掌握的技能。
robots.txt 本质上是站主与搜索引擎爬虫之间的一份公开协议。它的核心用途包括:屏蔽后台管理目录、测试环境等非公开页面;阻止爬虫抓取带有大量追踪参数的动态网址;声明 Sitemap 位置,帮助爬虫更快发现新发布的内容。它既不是安全工具,也不是强制性的技术手段,只对遵守规范的搜索引擎有效。
这里必须强调一点:任何人都可以通过浏览器直接查看这个文件。因此,凡是涉及用户隐私、订单数据或后台权限的敏感信息,绝对不能仅依赖 robots.txt 进行隐藏。正确的做法是结合服务器端的访问控制、登录验证或 IP 限制来实施真正的保护,否则相当于把钥匙放在门口地毯下。
在实践中,常见的错误是将不想公开的页面用 robots.txt 屏蔽,但忽略了页面本身可能已经被其他网站引用或通过其他途径泄露 URL。例如,某个会员专享的下载页,如果只在 robots.txt 中 Disallow,爬虫不会访问,但用户依然可以直接通过浏览器打开。这种场景下,必须从业务逻辑层面进行拦截。
robots.txt 的书写格式非常简洁,一行一条指令,以“字段: 值”的形式呈现。字段名不区分大小写,而路径值必须区分大小写。理解模糊匹配规则可以避免许多不必要的错误。
假设站点中有一个 /admin/ 目录仅限内部团队使用,但其中的公告页面 /admin/notice.html 需要被检索收录,同时需要告知爬虫地图位置。配置可参考以下写法:
User-agent: *
Disallow: /admin/
Allow: /admin/notice.html
Sitemap: https://www.example.com/sitemap.xml
上述配置的含义是:所有爬虫默认不能访问 admin 目录下的文件,但其中 notice.html 可以被单独放过。这里需要注意的是,Allow 的长度要长于 Disallow 的路径,才能精确匹配并生效。
另外,路径匹配遵循前缀原则。例如 Disallow 设为 /downloads,会禁止爬虫访问以 /downloads 开头的所有链接,包括 /downloads-free/ 这类可能并不想被屏蔽的路径。遇到这种情况时,博主群里常见的建议是仔细核对目录的命名,避免使用容易产生歧义的公共前缀。
制作一份靠谱的 robots.txt 并不需要复杂的工具,但每一步都需要谨慎核对。以下流程可以帮助新人避免踩坑。
控制爬虫的抓取预算对于大型站点尤显重要。除了基本的目录屏蔽,还可以通过组合使用 Disallow 来拦截含有明显追踪参数的动态页面。例如,对于电商网站,可以屏蔽类似 /products?id= 这样的链接,以减少爬虫在无效页面上消耗的资源。
需要注意,robots.txt 无法阻止页面被展示在搜索结果中,它只能控制“能不能抓”。如果想要阻止某一个页面被索引,更可靠的方式是使用 noindex 标签。两者配合使用,才能构建出理想的抓取与索引策略。
不能。它只是一种抓取限制,无法阻止用户直接访问,也无法防止他人猜测 URL。任何敏感数据必须依靠服务器端的身份认证和授权机制来保护。
效果取决于搜索引擎的爬取频率。通常在几天内,爬虫会重新读取该文件并调整抓取行为。可以通过站长平台的抓取测试工具手动触发抓取,以加快生效速度。
搜索引擎的约定是选择最长的匹配路径作为最终判断依据。若长度相同,则以 Disallow 优先。因此,放行文件时,Allow 路径必须比 Disallow 路径更长才能确保生效。
robots.txt 的配置并不困难,难在细节把控。建议在每次改版或迁移目录结构时,重新审视一次该文件,并结合搜索引擎的测试工具检查效果。对于不确定的规则,可以先在测试环境中模拟,再应用到线上。坚持用“最小必要权限”的原则来制定规则,这样既能保证爬虫高效工作,又能降低误伤风险。