屏蔽抓取不等于从索引里移除
处理不想被搜索展示的页面时,很多人的第一反应是在 robots.txt 里加一条 Disallow。过一段时间再去搜,页面标题和摘要依然在结果里,只是描述变成了“由于该网站的 robots.txt 文件,我们无法提供该页面的具体描述”。这容易让人误以为规则没生效,于是反复修改。
实际上,robots.txt 管的是“能不能抓”,索引里的条目管的是“已经抓过的内容”。两者不是一回事。已经进入索引的 URL,不会因为你禁止抓取而自动消失,反而因为爬虫再也读不到页面,无法确认它是否已经变化或失效。
noindex 必须被抓到才会生效
noindex 是页面级指令,写在 HTML 的 meta 标签或 HTTP 响应头里。它不像 robots.txt 那样在抓取前就被读取,而是爬虫先把页面抓下来、再解析,才可能知道“这个页面不要收录”。
如果 robots.txt 禁止抓取某个 URL,爬虫就不会去取这个页面,也就永远读不到它里面的 noindex。两个指令叠加,通常得到的是最糟的结果:页面留在索引里,而你既看不到它的最新内容,也无法用 noindex 让它退出。
所以想让已收录页面退出索引,比较稳妥的顺序是先允许抓取、让页面带上 noindex,等它在索引中消失之后,再考虑是否用 robots.txt 限制抓取,比如为了减轻服务器压力。
先明确目标,再选手段
- 页面彻底不要了:返回 404 或 410,这是最直接的失效信号。
- 页面还在,但暂时不想被搜索展示:保留可抓取状态并加 noindex,适用于活动结束页、临时说明页。
- 只是不想被频繁抓取:用 robots.txt,但要清楚它不负责移除已有的索引条目。
- 整站或整个目录需要处理:逐页加 noindex,或在服务器层面对应返回 410。直接用 robots.txt 全站屏蔽,只会让清理更慢。
几个容易踩的细节
被屏蔽的 URL 不要放进 sitemap
sitemap 的作用是告诉爬虫“这些地址值得抓”。如果其中一批 URL 同时又被 robots.txt 禁止抓取,提交后往往只会得到一堆“已提交但被屏蔽”的提示。要么放开抓取,要么把这些 URL 从 sitemap 里撤掉。
noindex 之后不用急着删内容
noindex 页面仍有正常内容和链接,不影响用户访问,只是不进入索引。等确认索引里已经查不到,再决定是删除、改版还是继续保留。
非 HTML 文件看响应头
PDF、图片、音视频等文件里塞不进 meta 标签,需要用 X-Robots-Tag 响应头表达 noindex。只改 HTML 模板对这些文件不起作用。
一个可以照做的自查顺序
- 在搜索引擎里用 site: 或直接搜 URL,确认页面当前是否还在索引中。
- 检查 robots.txt 是否屏蔽了该路径。如果屏蔽了,先放开。
- 确认页面返回的状态码是 200 且能正常渲染;如果本来就是 404 或 410,走删除流程即可。
- 加上 noindex(HTML 用 meta,文件用 X-Robots-Tag),并保持可抓取。
- 在搜索后台用 URL 检查工具请求重新抓取,确认抓取到的版本里带有 noindex。
- 定期复查索引状态。移除不是即时的,可能需要数天甚至更久。
把“抓取控制”和“索引控制”分开看,操作顺序就不会乱:想让页面退出索引,先让它能被抓到,再让爬虫读到你的意图。