robots.txt 写法避坑指南:让爬虫听话不乱抓
在网站运营和 SEO 优化过程中,robots.txt 文件虽然体积小、代码简单,却扮演着至关重要的“交通指挥员”角色。它决定了哪些页面可以被搜索引擎爬虫访问,哪些需要被屏蔽。然而,很多站长因为对 robots.txt 的理解不足,常常写出无效甚至适得其反的规则,导致重要内容无法被收录,或敏感信息意外暴露。本文将从基础语法、典型错误、最佳实践到实际案例,全面解析 robots.txt 的正确写法,助你避开常见陷阱,让爬虫真正“听话”。
首先,我们需要明确 robots.txt 的本质:它是一个位于网站根目录下的纯文本文件(如 https://www.example.com/robots.txt),用于向网络爬虫(主要是搜索引擎机器人)传达访问权限指令。需要注意的是,robots.txt 并非强制性协议,而是“君子协定”——大多数正规搜索引擎(如 Google、Bing)会遵守,但恶意爬虫完全可以无视。因此,它不能替代真正的安全措施(如身份验证或防火墙),而应被视为 SEO 和内容管理的辅助工具。
robots.txt 的基本结构由 User-agent、Disallow、Allow 等指令组成。User-agent 用于指定规则适用的爬虫名称,例如 Googlebot、Bingbot,或使用通配符 * 表示所有爬虫。Disallow 后接路径,表示禁止爬取的内容;Allow 则用于在 Disallow 范围内“开绿灯”。例如:
User-agent: *
Disallow: /admin/
Allow: /admin/public.html
这段代码的意思是:所有爬虫不得访问 /admin/ 目录,但允许访问其中的 public.html 文件。注意,Allow 和 Disallow 的优先级取决于具体搜索引擎的实现,Google 通常采用“最具体匹配”原则,即路径越长、越精确的规则优先级越高。
一个常见的误区是认为 Disallow: / 就能彻底屏蔽整个网站。实际上,这确实会阻止爬虫抓取所有页面,但已收录的页面可能仍会保留在搜索结果中(只是不再更新)。如果目的是完全从搜索引擎移除网站,应配合使用 noindex 标签或通过搜索引擎的站长工具提交删除请求。此外,有些站长误以为在 robots.txt 中屏蔽某页面后,该页面就不会出现在搜索结果中——这是错误的。如果其他网站链接到该页面,搜索引擎仍可能将其索引(尽管无法抓取内容),显示为“无描述”结果。因此,敏感内容绝不能仅依赖 robots.txt 隐藏。
另一个高频错误是路径写法不规范。robots.txt 使用的是相对路径,且区分大小写(在 Linux 服务器上尤为明显)。例如,Disallow: /Private/ 与 Disallow: /private/ 是两个不同的规则。此外,末尾斜杠也有影响:/folder 会匹配 /folder 和 /folder123,而 /folder/ 仅匹配以该目录开头的路径。建议使用精确路径,并在测试工具中验证。
还有一种情况是重复定义 User-agent。例如,先写 User-agent: Googlebot,再写 User-agent: *,后者不会覆盖前者,而是为不同爬虫分别设置规则。但如果在同一 User-agent 块中多次使用 Disallow,规则会叠加。因此,结构清晰、逻辑分明的写法至关重要。
除了基本指令,robots.txt 还支持 Sitemap 指令,用于告诉搜索引擎站点地图的位置。例如:Sitemap: https://www.example.com/sitemap.xml。这有助于爬虫更高效地发现新内容,尤其对大型网站非常有用。建议将此行放在文件末尾,不影响主要规则。
那么,一份“正确”的 robots.txt 应该包含哪些内容?以下是一个通用模板,适用于大多数中小型网站:
User-agent: *
Disallow: /cgi-bin/
Disallow: /tmp/
Disallow: /internal/
Disallow: /search
Allow: /search/results.html
Sitemap: https://www.example.com/sitemap.xml
解释:屏蔽了系统脚本目录(/cgi-bin/)、临时文件(/tmp/)、内部管理页面(/internal/),以及站内搜索入口(/search),但允许特定的搜索结果页被索引(如果该页面对用户有价值)。同时提供站点地图,便于爬虫发现内容。
对于电商或内容型网站,还需特别注意动态参数页面。例如,商品排序、筛选条件生成的 URL(如 ?sort=price&order=desc)可能导致大量重复内容。可通过 Disallow: /*?* 屏蔽所有带参数的 URL,或使用更精细的规则。但需谨慎,避免误伤正常页面。
测试 robots.txt 是否生效至关重要。Google Search Console 提供了“robots.txt 测试工具”,可模拟不同爬虫访问指定 URL,查看是否被允许。Bing Webmaster Tools 也有类似功能。建议在修改后立即测试,避免因语法错误导致全站被屏蔽。
此外,robots.txt 文件必须可公开访问,且返回 HTTP 200 状态码。如果返回 404,爬虫会认为没有限制,从而抓取所有内容;如果返回 5xx 错误,部分爬虫可能暂停抓取。因此,确保该文件始终可用、格式正确是基本要求。
最后,要定期审查 robots.txt。随着网站结构变化,旧规则可能不再适用。例如,新增了会员中心,就应及时加入 Disallow 规则;若将博客迁移到新路径,也需更新屏蔽逻辑。建议将 robots.txt 纳入网站上线检查清单。
总结来说,robots.txt 虽小,却是 SEO 不可忽视的一环。正确的写法不仅能保护隐私、减少无效抓取,还能引导爬虫聚焦核心内容,提升索引效率。避免“一刀切”屏蔽、注意路径细节、善用 Allow 与 Sitemap 指令,并结合站长工具验证,才能真正发挥其价值。记住:让爬虫“听话”,不是靠命令,而是靠清晰、合理的规则设计。