robots.txt 是站点上最轻量的一份文件,却常常是抓取问题里最难第一时间想到的一环。它不参与页面渲染,也不影响用户访问,所以一旦规则写错,站长往往是在抓取量下滑、内页迟迟不更新时才回头排查。
误屏蔽为什么容易被忽略
搜索引擎蜘蛛在发起请求前会先读取 robots.txt,被 Disallow 命中的 URL 通常不会进入抓取队列。问题在于,这类屏蔽表现为“没有任何响应”,日志里既没有 4xx 也没有 5xx,看起来像是蜘蛛单纯没有来访。如果同一目录下的内链仍然存在,用户点击正常,页面也正常渲染,就更难察觉。
- 被屏蔽的目录里仍有大量内链入口,抓取预算被消耗在无效路径上;
- CSS、JS 被屏蔽后,蜘蛛拿到的页面结构与用户所见不一致;
- 被屏蔽的 URL 依然可能出现在 Sitemap 中,形成互相矛盾的信号。
几类常见误伤
1. 整目录屏蔽但内链未同步清理
改版或下线栏目时习惯用 Disallow: /old/ 一刀切,导航和旧文章正文里的链接却没删。结果是蜘蛛不断发现这些 URL,又不断被拒绝,等于反复在门口打转。
2. 静态资源与接口路径被顺手屏蔽
有些模板为了“省抓取量”,会把 /assets/、/api/、/search/ 一并屏蔽。若页面依赖这些资源完成渲染,蜘蛛看到的可能只是空壳。建议只屏蔽明确的隐私路径或无限参数路径,渲染必需资源保持可抓取。
3. Disallow 与 noindex 混用
Disallow 阻止抓取,noindex 阻止索引,两者作用阶段不同。若 URL 已被 Disallow,蜘蛛读不到页面上的 noindex,旧快照可能长期存在。需要移除索引时,应先放开抓取,等 noindex 生效后再考虑屏蔽。
4. 通配符与规则优先级写错
$ 与 * 的组合、Allow 与 Disallow 的匹配长度优先级,都容易在复制粘贴中出错。例如 Disallow: /*? 可能把带参数的正常列表页一并拦掉。
按这个顺序排查
- 直接访问 /robots.txt,确认返回 200 且内容完整,没有被 WAF 或 CDN 改写;
- 逐条核对 Disallow 路径,与站点实际目录、Sitemap 条目做交叉比对;
- 抽取被屏蔽目录下的 5~10 个代表性 URL,检查站内是否仍有内链指向;
- 用抓取工具的“以蜘蛛身份访问”或日志中的蜘蛛 UA 验证实际可访问性;
- 确认规则无误后,再检查 Sitemap 是否仍包含被屏蔽 URL,保持两者一致。
恢复之后要盯一段时间
放开屏蔽只是第一步,蜘蛛重新发现这些 URL 需要时间,尤其是原本就缺乏内链的深层页面。建议在恢复后:
- 从首页或栏目页补一到两条指向重点页面的内链,帮助页面重新进入抓取路径;
- 观察日志中该目录的抓取频次变化,判断是规则问题还是内容本身的问题;
- 如果页面已无价值,直接做 301 或 410,不要长期挂着 Disallow 占位。
把 robots.txt 当作临时止痛药来用,短期看似干净,长期往往留下更多需要清理的入口。每条规则最好都能对应一个明确理由。
robots.txt 的维护成本很低,但写错的代价不低。定期把它和站点结构、内链、Sitemap 放在一起看一遍,能避免很多“蜘蛛不来”的误判。