网站收录

robots.txt、noindex 还是直接删除:让页面离开索引的三种做法

站点运营里常碰到一个需求:某个页面不想让它出现在搜索结果里。控制收录的手段有 robots.txt、noindex 和直接删除三种,它们分别作用在抓取、索引和页面存在性三个环节。混用最常见的后果是爬虫被挡在门外、读不到 noindex,页面长期留在索引里。本文拆解三者的分工,并给出一套可执行的自查顺序。

网站收录

robots.txt、noindex 还是直接删除:让页面离开索引的三种做法

站点运营里常碰到一个需求:某个页面不想让它出现在搜索结果里。参数筛选页、临时活动页、内部测试页、已经下线的老栏目,都属于这一类。这时通常有三条路可走——写进 robots.txt、加 noindex、或者直接删掉返回 404/410。它们看起来都在做同一件事,实际作用在完全不同的环节,混着用之后经常出现“折腾了半天没变化”的情况。

抓取和索引是两个环节

搜索引擎处理一个 URL 大致分两步:先抓取,把页面内容取回来;再判断是否值得放进索引,索引里有了,页面才可能出现在搜索结果中。控制收录的手段,有的作用在第一步,有的作用在第二步。分不清这一点,就容易用错工具。

robots.txt 只管抓取入口

robots.txt 里的 Disallow 告诉爬虫“这个路径不要来抓”,解决的是抓取问题,不是索引问题。一个已经被收录的页面,事后加进 robots.txt 屏蔽,通常不会让它从索引里消失——爬虫不再来抓,也就读不到页面上后来补充的 noindex,搜索结果的标题和摘要可能长期停留在旧版本。

所以 robots.txt 更适合的场景是:页面本身没问题,只是不想让爬虫把抓取额度浪费在上面,比如无限翻页的参数组合、站内搜索结果页。

noindex 管索引,但要先能被抓到

noindex 是页面级指令,写在 meta 标签里;非 HTML 文件则用 X-Robots-Tag 响应头。它表达的是“这个页面可以抓,但请别放进索引”。要让这条指令生效,前提是爬虫真的抓到了这个页面并读到了它。因此页面返回码应是 200,内容正常,并且没有被 robots.txt 屏蔽。

两个一起用会互相抵消

最常见的错误组合是:既在 robots.txt 里屏蔽了这个路径,又在页面里加了 noindex。结果是爬虫被挡在门外,永远读不到 noindex,页面可能一直留在索引里,尤其是当它还有外链指向的时候。

如果目标是把一个已经收录的页面拿掉,顺序应该是:先在 robots.txt 里放行,确保页面能被抓取;再加 noindex;等它在搜索结果里消失之后,如果确实不想被频繁抓取,再考虑加回屏蔽。

页面确实不要了:404 还是 410

如果页面本身就该下线,那就不是“藏起来”的问题,而是“不存在”的问题。返回 404 表示未找到,返回 410 表示永久移除。两者都可能让页面退出索引,410 的语义更明确,处理起来通常也更快一些。如果删除页面上还有价值相近的替代内容,更合适的是做 301 跳转到新地址,而不是直接扔一个 404。

按需求选手段

  1. 页面还在,只是不想被索引:保持可抓取,加 noindex;HTML 用 meta,PDF、图片等文件用 X-Robots-Tag。
  2. 页面永久下线:返回 410 或 404,同时在页面上保留 noindex 更稳妥;有替代页就做 301。
  3. 只是不想浪费抓取额度:robots.txt 屏蔽,但要接受它可能仍留在索引里。
  4. 改版期间的临时遮挡:可以短期用 robots 屏蔽,改版完成后记得放行。

一套可执行的检查顺序

  1. 先确认这个 URL 现在到底在不在索引里,用 site 查询或直接搜完整地址。
  2. 看 robots.txt 有没有屏蔽该路径。如果屏蔽了,先放行,否则后面的操作都白做。
  3. 在页面上加 noindex,确认页面返回 200、内容正常、没有多余的跳转链。
  4. 用抓取测试工具确认 noindex 确实被读到,而不是藏在 JS 渲染之后才出现。
  5. 等索引更新,周期可能是几天到几周,视页面权重和抓取频率而定。
  6. 确认从索引中消失后,再决定是否需要加回 robots 屏蔽。
判断用哪种手段,先问一句:这个页面是“还在但不想被看到”,还是“已经不要了”。前者用 noindex,后者用 404/410,robots.txt 只负责挡抓取,别指望它做索引层面的清理。