站点运营

站点运营:robots.txt 自查,别让一行规则挡住整站蜘蛛

robots.txt 是给爬虫看的说明文件,写错一行就可能让整站或重要栏目从蜘蛛视野里消失。本文从文件位置、语法、常见误封、sitemap 声明和日志验证几个角度,给出一份可执行的自查清单,帮你把规则改对,而不是改多。

站点运营

站点运营:robots.txt 自查,别让一行规则挡住整站蜘蛛

先确认 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。

用日志和工具验证,而不是凭感觉

改完规则后,至少做三件事:

  1. 用搜索引擎官方提供的 robots.txt 测试工具,输入几个重要 URL,确认结果是“允许”或“被阻止”符合预期。
  2. 查看服务器日志中 robots.txt 的请求状态码,确认爬虫拿到的是 200,而不是 301、403 或 404。
  3. 观察之后几天的蜘蛛访问日志,看重点栏目的抓取量是否恢复,是否出现大量 403 或 503。如果规则刚改完,缓存和生效时间可能有延迟。

别忘了 robots.txt 的边界

robots.txt 只是爬虫自愿遵守的约定。它不能阻止页面被索引:如果其他站点链接了你的 URL,搜索引擎仍可能收录。真正要阻止收录,应该对页面返回 noindex,或者用登录、密码等方式做访问控制。把 robots.txt 当成安全工具,容易留下误解。

建议把 robots.txt 纳入上线发布检查清单:迁移域名、切换 CDN、复制测试环境、更换 CMS 之后,都重新访问一次根目录下的文件,确认没有多余的 Disallow。规则宁可少写几条,也不要为了“优化抓取”加上一堆自己也说不清的指令。