网站收录

robots.txt 误屏蔽:几类常见情况与排查顺序

很多收录问题查到最后,根因在 robots.txt。它只控制抓取,不等于从索引里移除。本文梳理全站 Disallow 残留、静态资源被挡、规则写得太宽、与 noindex 冲突这几类常见误屏蔽,并给出一套从 robots.txt 可访问性到日志验证的排查顺序。

网站收录

robots.txt 误屏蔽:几类常见情况与排查顺序

robots.txt 管的是抓取,不是收录

很多收录问题查到最后,根因在 robots.txt。它的作用是告诉蜘蛛哪些路径不要抓,但它并不等于把 URL 从索引里删除。一个地址被 Disallow 之后,蜘蛛只是不去读页面内容;如果站外别处有指向它的链接,它仍可能作为一条没有摘要的记录存在于索引中。

更麻烦的是,robots.txt 的生效是静默的。页面本身一切正常,返回 200,内容也没有问题,只是蜘蛛从一开始就没来过。

几种常见的误屏蔽

全站 Disallow 忘了删

测试环境、预发布环境切换时留下的 Disallow: / 最容易出问题。表现是整个站点收录量长期为零或持续下滑,服务器日志里几乎看不到蜘蛛请求。检查方式很直接:用浏览器打开 /robots.txt,看是不是第一行就把整站挡住了。

屏蔽了 CSS、JS 等静态资源

为了让日志干净,有人会把 /assets/、/static/、/*.js 之类加进 Disallow。对依赖 JavaScript 渲染的页面来说,这会让蜘蛛拿到一个空壳。要么放开这些目录,要么接受渲染不全的结果,两者只能选一个。

规则写得太宽,命中了想收录的目录

比如想屏蔽 /search/,写成 Disallow: /sea,就会连带屏蔽 /seasonal/、/search-tips/ 这类页面。robots 的匹配是前缀式的,路径写得越短,误伤面越大。

把分页、筛选页一刀切

筛选参数页确实常常需要收敛,但如果方式选错,比如把带参数的商品页全部屏蔽,同时页面上又没有其他入口,这些商品就可能完全无法被发现。

robots 与 noindex 的冲突

一个常见误解是:被 robots.txt 屏蔽的页面,再加个 noindex 就能确保不被收录。实际情况恰恰相反——蜘蛛不抓取页面,就读不到页面里的 noindex 标签。想彻底移除,要么放开抓取让它读到 noindex,要么直接返回 410 或 404,也可以用站长平台提供的移除工具。

顺序是:先允许抓取,再让页面自己表达 noindex,等索引里消失之后,才考虑重新屏蔽。

按这个顺序排查

  1. 确认 /robots.txt 本身能正常访问,返回 200 且内容是当前版本。返回 5xx 时蜘蛛会保守处理,可能暂停抓取。
  2. 检查目标路径有没有被任何一条 Disallow 规则命中,注意前缀匹配、通配符 * 和 $ 结尾的写法。
  3. 用日志或抓取统计确认蜘蛛是否真的请求过这些 URL。没有请求,问题就在抓取层,不在内容层。
  4. 检查 X-Robots-Tag 响应头。有些屏蔽不写在 robots.txt 里,而是服务器统一加上的。
  5. 误屏蔽修复后,在站长平台提交几条代表性 URL,观察抓取是否恢复。

修复之后别急着下结论

放开 Disallow 并不等于马上恢复收录。抓取频率的回升需要时间,尤其是长期没被抓过的目录。这段过渡期里,比较稳妥的做法是先把重要的入口页和站内链接补上,让蜘蛛有明确的路径可走,再观察日志里请求量的变化趋势,而不是盯着收录数字一两天内的跳动。

另外,robots.txt 的改动本身也有缓存期,不同引擎重新读取的频率并不一样。改完之后留出一段时间再复查,比反复修改规则要有效得多。