处理不希望出现在搜索结果里的页面时,很多站点的第一反应是「屏蔽掉」。但屏蔽其实有两条完全不同的路:一条是在 robots.txt 里写规则,一条是在页面里放 noindex。两者不通用,混着用经常出现两种结果:以为挡住了,索引里却还有记录;想放出来,却迟迟不收录。
robots.txt 阻止的是抓取动作
robots.txt 里的 Disallow 表达的只有一件事:这个路径别来抓。它不表达「这个页面别收录」。如果页面此前已经被抓取过,或者有外链指向它,索引里可能仍然保留旧记录,只是蜘蛛不再去更新里面的内容。
更麻烦的是,一旦整个目录被 Disallow,蜘蛛就读不到目录内页面的 noindex 标签。在这个目录上再补 noindex,等于写了个没人看的备注。
noindex 要生效,前提是页面被抓到
noindex 写在 meta robots 或 HTTP 响应头里,作用对象是这一条索引记录。它必须先被蜘蛛抓取、解析,才会起作用。
所以顺序很重要:先允许抓取,让蜘蛛读到 noindex,等索引里的记录清掉,再考虑要不要连抓取也一起挡。反过来做,等于先关了门,再把通知贴在门里面。
几种常见的混用场景
- 新做的活动页、临时页想彻底不进索引,直接在 robots.txt 里 Disallow。蜘蛛没机会读到 noindex,如果 URL 已经通过外链或提交被发现,索引里可能出现只有地址、没有摘要的空记录。
- 页面已经加了 noindex,robots.txt 同时又挡住。之后想恢复收录,得先放开抓取,再撤 noindex,两步都做完才可能被重新处理。
- 想批量下架页面,robots.txt 和 noindex 一起上。旧记录清理依赖重新抓取,路径被封反而拖慢这个过程。
- noindex 和 canonical 指向别的页面同时使用。这两个信号含义不同,叠在一起容易互相干扰,先想清楚是要它消失,还是要它归并到另一个地址。
怎么选更合适
只是不想让某个页面出现在搜索结果里,同时页面本身对用户仍有价值,保留可抓取并加 noindex 通常更直接。
不希望浪费抓取资源、或者内容对搜索引擎确实没有意义的路径(后台入口、站内搜索结果、无限参数组合),用 robots.txt 挡抓取更合适,前提是也不指望这些地址进索引。
页面已经真正下架,用 404 或 410 比堆规则更清楚,索引清理也更明确。
撤掉限制之后不会立刻恢复
把 noindex 去掉、或放开 robots.txt 之后,页面不会马上回到索引。索引恢复依赖重新抓取和重新评估,时间从几天到几周不等。这段时间可以先通过站内链接、站点地图让它被重新发现,但不必反复改动规则。
一份简单的自查顺序
- 确认页面当前返回的状态码。
- 确认 robots.txt 是否允许抓取这个路径。
- 确认页面或响应头里有没有 noindex。
- 确认 canonical 指向哪里。
- 最后再去看索引里是否还留着旧记录。
把这五层依次对齐,比一次性把能用的规则全加上更省事,也更容易判断是哪一步没生效。
挡住抓取和挡住收录是两件事,规则叠加不等于效果叠加。
处理收录问题,先把目的说清楚,再选手段,顺序反了往往要回头返工。