很多站长把 noindex 当成“这个页面别管了”的总开关,实际上它管的是索引,不管抓取。页面加上 noindex 之后,搜索蜘蛛照样可能来,只是读到指令后不把它放进索引。理解这条分界线,能避免不少误判:日志里看到某个 URL 反复被抓,不等于设置失效;反过来,想让页面彻底安静下来,单靠 noindex 也不够。
noindex 控制的是索引,不是发现
搜索蜘蛛发现 URL 的路径没有变:内链、Sitemap、外链、上一轮留下的抓取队列。只要页面还有入口,它就有可能被排进抓取列表。抓取完成之后,蜘蛛读到页面 head 里的 robots meta,或者响应头里的 X-Robots-Tag,才决定不进索引。
于是会出现三种状态并存的情况:被发现了、被抓取了、但不被索引。日志里的抓取记录反映的是“发现”这一层,和最终索引结果对不上,是正常的。
按页面类型拆开处理
确实不该出现在搜索结果里的页面
比如后台入口、测试页、会员中心。这类页面如果站内还有链接指向它,用 noindex 是对的;如果链接已经清理干净,又不希望它消耗抓取次数,可以考虑用 robots.txt 屏蔽。但两者搭配有前提。
robots.txt 的 Disallow 会让搜索蜘蛛根本读不到页面里的 noindex。如果这条 URL 已经被外部链接指向,屏蔽抓取反而可能让它以“只有链接、没有内容”的形式留下记录。所以先确认页面是否已经被索引、是否有外链,再决定是屏蔽抓取还是只加 noindex。
留在站内但不需要索引的页面
分页的第二页以后、排序参数页、站内搜索结果页,这类 URL 通常希望被抓到一部分,好顺着链接继续往下走,但不希望它们自己出现在结果里。noindex 可以用,重点是别把内链一并砍掉,否则后面的内容页也跟着失去入口。
已经下线的页面
内容彻底删除时,noindex 并不是首选。noindex 页面仍然会被反复抓取,占用抓取次数。返回 404 或 410 更直接,也能让搜索蜘蛛逐步把这条 URL 从待抓队列里清掉,比一直挂着一个“存在但不索引”的空壳更省事。
robots meta 与 X-Robots-Tag 的差别
robots meta 只能写在 HTML 的 head 里,对 PDF、图片、视频这类非 HTML 文件无效。这类资源要用响应头里的 X-Robots-Tag。另一个常见坑是 noindex 和 canonical 同时出现在页面上,两边指向不同的判断结果,信号叠加后处理方式不好预测,建议同一页面只保留一种明确意图。
核对顺序
- 先确认这个 URL 是否真的有站内入口,日志里的抓取是来自内链、Sitemap,还是外部链接。
- 再确认 robots meta 或 X-Robots-Tag 的写法是否被正确读取,是否存在模板覆盖或位置放错。
- 如果同时用了 robots.txt 屏蔽,先判断页面是否已经在外链或历史索引里出现过。
- 看抓取频率:noindex 页面如果被抓得很勤,说明入口太多,或者 Sitemap 里还挂着它。
- 最后决定是保留抓取、减少入口,还是改用状态码处理。
小结
noindex 是一条关于结果的指令,不是关于访问的指令。把“要不要被发现”“要不要被抓”“要不要进索引”当成三件事分开看,日志里的数据才不容易被误读。多数情况下,处理顺序是:先理清入口,再决定抓取策略,最后才轮到索引状态。