站点运营

站点运营:搜索蜘蛛的URL发现,从 noindex 与 X-Robots-Tag 的误用谈起

noindex 只挡收录,不挡抓取。本文梳理 noindex、X-Robots-Tag 与 robots.txt 的边界,列举模板层误加、分页屏蔽、附件响应头遗漏等常见场景,并给出一份可执行的自查流程,帮助站点在不误伤 URL 发现的前提下管理索引。

站点运营

站点运营:搜索蜘蛛的URL发现,从 noindex 与 X-Robots-Tag 的误用谈起

很多站点在内容下架、改版过渡或活动结束时,会顺手给页面加一个 noindex。这个标签确实能阻止页面进入索引,但它与「搜索蜘蛛是否会发现这个 URL」是两件事:被 noindex 的页面仍然可以被抓取和读取,页面上的链接仍然会被顺着爬。真正容易被忽略的,是 noindex 和 X-Robots-Tag 用错位置之后,连带把整块目录的 URL 发现一起掐掉。

先分清 noindex 与「不被抓取」

noindex 的语义是「可以来看,但不要收录」,而 robots.txt 的 Disallow 是「不要来看」。两者组合会带来一个常见陷阱:如果先用 robots.txt 屏蔽目录,再指望页面里的 noindex 生效,搜索蜘蛛可能根本读不到那个 noindex,结果是这些 URL 在部分情况下仍以无描述的形式出现在结果里。稳妥的做法是:要彻底不收录且不需要被发现,用 robots.txt 配合 404 或 410;要保留被抓取、只是不进索引,用 noindex。两者不要混用。

常见的几种误用场景

  • 模板层误加。主题或 CMS 的 head 模版里写死了 noindex,只在首页做了条件判断,结果栏目页、标签页、作者页全部中招。
  • 分页与聚合页。为了「避免重复内容」给分页加 noindex,但列表页本身是新文章的主要入口,屏蔽之后新 URL 的发现路径会明显变窄。
  • 附件与文档。PDF、表格文件的 noindex 常常写在 Nginx 或对象存储的响应头里,只看页面源码是查不到的。
  • noindex 与 canonical 打架。页面同时声明 canonical 指向另一个地址,又给自己加 noindex,信号之间容易互相拉扯。
  • 上线后忘记摘掉。灰度或维护期间加的 X-Robots-Tag 被带进了生产环境,整站静默退出索引。

一份可执行的自查流程

  1. 在浏览器打开目标页面,查看源码中的 robots meta,记录是 noindex 还是 noindex, nofollow。
  2. 查看 HTTP 响应头,重点是 X-Robots-Tag。静态资源、下载链接也要走一遍。
  3. 对比不同环境:预发布、灰度、生产三套配置是否一致,有没有一份被复制到了别处。
  4. 抽查近 30 天的服务器日志,看被 noindex 的目录里还有没有搜索蜘蛛的请求记录。请求数骤降,通常说明入口被切断了。
  5. 建立一张页面清单,写清哪些页面允许抓取、哪些允许索引,改版时逐条核对,而不是凭印象。

什么时候该用 noindex,什么时候不该

适合 noindex 的,一般是确实没有独立检索价值的页面:站内搜索结果页、用户个人中心、需要登录才能看到完整内容的页面、一次性活动页。需要谨慎对待的,是承载新内容入口的列表页、分类页和标签聚合页——这些页面的主要价值不在于被搜到,而在于让搜索蜘蛛顺着链接走到详情页。

如果只是想让某个 URL 从索引里消失,先确认内容本身是否已经下线。内容确实不存在了,用 404 或 410 比 noindex 更干净,也能让搜索蜘蛛更快收敛。

noindex 像一把「只关灯、不锁门」的开关。它挡的是收录,不挡抓取,也挡不住链接把蜘蛛带进来。真正需要关闭入口时,要回到 robots.txt、状态码和内链结构上一起改。

最后建议把 noindex 相关的改动纳入变更记录:谁加的、加在哪一层、什么时候去掉。这类问题排查起来往往不复杂,但因为藏在响应头或模版里,很容易一直挂着没人发现。