先确认 robots.txt 能被正常访问
robots.txt 必须放在站点根目录,比如 https://example.com/robots.txt。子目录下的 robots.txt 不会被主流爬虫当作全站规则读取。用浏览器或命令行访问一次,确认返回 200,内容不是空白或 404 页面。若站点有多个域名、www 与非 www、HTTP 与 HTTPS,需要确认爬虫实际访问的是哪一个入口,规则是否挂在那个入口上。
robots.txt 是公开文件,任何人可以查看。不要在里面写后台路径、测试地址或任何你不想公开的信息。
检查最容易误封的几种写法
下面这些情况在站点上线、迁移或复制环境时很常见:
- Disallow: / 整站禁止。测试环境常这样写,上线时如果忘记删除,蜘蛛会停止抓取。自查时先看第一组 User-agent 是否为 * 并禁止了根目录。
- 大小写和路径写错。robots.txt 的路径匹配区分大小写,/Images/ 和 /images/ 不是一回事。禁止目录时不要把不想封的目录一起圈进去。
- 误封 CSS、JS 和图片。如果禁止了 /assets/ 或 /static/,爬虫可能无法渲染页面,影响对移动适配和内容的理解。除非有明确理由,一般建议允许这些静态资源。
- User-agent 分组冲突。同一文件里出现多个针对同一爬虫的组,不同爬虫的解析方式可能不同。规则越简单、分组越少,越不容易出问题。
- Allow 与 Disallow 顺序。多数爬虫按最长匹配优先,但不同实现存在差异。不要依赖复杂顺序,能合并的规则就合并。
把 sitemap 和抓取范围写清楚
robots.txt 里声明 sitemap 地址是常见做法,写法是 Sitemap: https://example.com/sitemap.xml。注意地址要写完整,包含协议和域名。sitemap 本身不要被 Disallow 挡住,否则爬虫拿到地址也无法读取。
如果站点有站内搜索、筛选参数、打印页或会话 ID 这类 URL,可以在 robots.txt 里做适度限制,但不要一次性封掉整个栏目。更稳妥的方式是结合 canonical、noindex 和参数处理,而不是只靠 robots.txt。
用日志和工具验证,而不是凭感觉
改完规则后,至少做三件事:
- 用搜索引擎官方提供的 robots.txt 测试工具,输入几个重要 URL,确认结果是“允许”或“被阻止”符合预期。
- 查看服务器日志中 robots.txt 的请求状态码,确认爬虫拿到的是 200,而不是 301、403 或 404。
- 观察之后几天的蜘蛛访问日志,看重点栏目的抓取量是否恢复,是否出现大量 403 或 503。如果规则刚改完,缓存和生效时间可能有延迟。
别忘了 robots.txt 的边界
robots.txt 只是爬虫自愿遵守的约定。它不能阻止页面被索引:如果其他站点链接了你的 URL,搜索引擎仍可能收录。真正要阻止收录,应该对页面返回 noindex,或者用登录、密码等方式做访问控制。把 robots.txt 当成安全工具,容易留下误解。
建议把 robots.txt 纳入上线发布检查清单:迁移域名、切换 CDN、复制测试环境、更换 CMS 之后,都重新访问一次根目录下的文件,确认没有多余的 Disallow。规则宁可少写几条,也不要为了“优化抓取”加上一堆自己也说不清的指令。