网站收录

加了 noindex,页面还在索引里:指令生效前后的几件事

noindex 是一句"请不要收录"的请求,不是立即删除键。本文梳理它和 robots.txt、canonical 撞车时的处理顺序,为什么加了指令索引里还留着旧记录,以及上线前后该检查哪些位置,帮你把移除流程走得干净一些。

网站收录

加了 noindex,页面还在索引里:指令生效前后的几件事

不少人在页面上加了 noindex,过几天去搜,发现结果里还挂着这条 URL,于是怀疑指令没写对、或者搜索引擎没听话。多数情况下,问题不在指令本身,而在于对它的预期:noindex 是一句请求,不是一个立刻执行的删除动作。

noindex 管的是索引,不是抓取

这两个概念经常被混在一起。抓取是蜘蛛来取页面内容,收录是内容进入索引并有可能出现在结果里。noindex 属于索引层指令,它不会阻止蜘蛛来抓页面——恰恰相反,蜘蛛必须先把页面抓下来,才能读到这条指令。

所以"加了 noindex 蜘蛛就不来了"是误解。你依然会在日志里看到它对这条 URL 的访问,这是正常的。

把它理解成贴在门口的一张便条:请别把这里登记进册子。便条要被人看到才算数,而看的人什么时候来,不由你定。

为什么加了指令,索引里还留着它

常见原因大致分三类,排查时可以按这个顺序看。

  • 时间差。已经进入索引的 URL,需要等蜘蛛重新抓取、重新处理后,才可能被移出。这个间隔取决于页面的抓取频率、站点体量和整体抓取安排,几周是常态,冷门页面更久。
  • 指令没被读到。比如 robots.txt 屏蔽了这个目录,蜘蛛抓不到内容,自然看不到页面里的 noindex;比如 meta 标签被写进了 body;比如靠 JavaScript 后期注入,渲染环节没跑到;比如 X-Robots-Tag 拼写有误,或者加在了不该加的那层响应上。
  • 留在索引里的是另一个 URL 版本。带追踪参数、大小写不同、http 与 https、带与不带结尾斜杠、甚至另一个域名下的镜像页面。你 noindex 的是 A,索引里留的是 B,看上去像是没生效。

和 robots.txt 撞车时最麻烦

这是最容易被忽略的一种组合。如果某批 URL 同时被 robots.txt 屏蔽、页面里又写着 noindex,蜘蛛抓不到内容,noindex 就永远读不到。结果可能是:这些 URL 因为曾经被抓过或有过外链,以缺少摘要的形式长期挂在结果里,而你手上没有任何有效工具把它清掉。

处理顺序建议是反过来的:先放开抓取,让 noindex 被读到,等它真正掉出索引之后,再考虑是否用 robots.txt 屏蔽。如果一定要屏蔽(比如抓取压力太大),至少心里清楚这批 URL 会处于一个无法用指令控制的状态。

canonical 和 noindex 一起用会怎样

这两个指令方向是相反的。canonical 的意思是"这一页要留下,但请把权重算给另一个地址";noindex 的意思是"这一页不要留下"。同时给,搜索引擎通常以 noindex 为准,canonical 被忽略。
所以选择很简单:想让页面留在索引里,就只用 canonical;想让它彻底出去,就用 noindex。不要指望两个一起写能拿到"既留又不留"的中间态。

上线前后的检查清单

  1. 确认 meta robots 写在 head 里,内容是 noindex 还是 noindex,follow,按需要选。
  2. 用官方的 URL 检查类工具看渲染后的 HTML,确认指令确实出现在里面,而不是只出现在源码里。
  3. 如果走的是响应头,确认响应头里真的有这条,且没有在中间层被覆盖。
  4. 确认该 URL 没有被 robots.txt 拦住。
  5. 确认同内容的其他 URL 版本(参数、协议、大小写)也一并处理了。
  6. 记下时间点,隔三四周再抽查一次,别当天就下结论。

哪些页面值得考虑用 noindex

判断标准不是页面好不好看,而是它有没有独立价值、会不会和别的页面争同一批需求。站内搜索结果页、筛选和排序参数组合出来的页面、内容极少的标签页、测试页、纯功能性的感谢页和登录跳转页,通常都在这类清单里。

但也不必一刀切。有些筛选页确实有稳定搜索量,那就该给它正经的内容和规范 URL,而不是简单遮掉。

移除之后,别急着删页面

noindex 生效并不要求页面消失。页面仍然可以正常访问、承接内链、服务用户,只是不进索引。如果直接删掉让它返回 404,反而可能有一段时间索引里还留着旧记录,用户点进去看到错误页。

更稳的节奏是:先 noindex,等掉出索引,再决定这个地址是保留、做 301 跳转,还是用 410 明确告知已删除。

它不是一次性动作

加 noindex 之后真正要做的只有两件事:确认指令真的被读到了,然后给它时间。如果这两步都没问题,索引里的旧记录自己会走;如果第一步就有问题,等多久都不会有变化。