内容下架、活动结束、商品停售、栏目合并——站点运营中总有一些页面需要退出。但“从网站上删掉”和“从索引里消失”是两件事。不少站长删完页面就以为结束了,几周后搜索结果里仍挂着旧标题和旧摘要。问题通常不在爬虫慢,而在下线方式选错了。
先分清三种“下线”
动手之前,先确认页面属于哪一种情况,选法完全不同。
- 彻底不要了:内容永久废弃,以后也不会再做同类页面。
- 暂时不对外:页面本身还想留着,只是不希望出现在搜索结果中。
- 只是换了地址:内容还在,搬到了新 URL。这属于重定向,用 301 处理,不在本文讨论范围。
404:默认做法,适合内容确实消失
页面删除后,服务器对旧 URL 返回 404,是最常见也最简单的处理。它传递的信息是:这个地址现在没有内容。爬虫多次访问都拿到 404 之后,会逐步把它从索引中移除。
关键点是状态码要真实。如果服务器返回 200,再用模板显示一句“页面不存在”,对爬虫来说这就是一个正常页面,只是内容很空——也就是常说的软 404,页面可能长期留在索引里。
410:把“永久移除”说清楚
410 的语义比 404 更明确:资源曾经存在,并且确定不会再回来。因为不需要反复确认,爬虫对 410 的处理通常比 404 更果断,失效过程可能更快一些。
但它不是万能钥匙。批量把几万个页面全改成 410,并不会让它们一夜之间消失;而且如果内容以后可能恢复,用 410 就不太合适——恢复时往往要重新走一遍发现与收录流程。
noindex:页面保留,但不进索引
想让页面继续为登录用户或内部流程服务,只是不出现在搜索结果里,用 noindex 更合适。它写在页面的 meta 标签或 HTTP 响应头里,告诉爬虫:可以抓,但别放进索引。
这里有个常见的坑:noindex 必须让爬虫抓到页面才能生效。如果同时在 robots.txt 里 Disallow 了这个路径,爬虫根本读不到标签,页面反而可能一直留在索引中。两者不要同时用。
为什么不建议用 robots.txt 做下线
robots.txt 管的是“能不能抓”,不是“能不能收录”。它只能阻止爬虫访问,无法删除已经建立的索引记录。用它来下线已收录页面,常见的结局是:爬虫进不来,索引里的旧版本也永远得不到更新。
唯一相对合理的使用场景,是页面数量极大、服务器压力扛不住时,先用它降低抓取频率,再逐步处理状态码。这只是过渡手段,不是终点。
下线之后的收尾清单
- 把站内指向该页面的内链清理掉,或改指到相关的新页面,避免用户和爬虫走到死路。
- 从 sitemap 中移除对应 URL,不要让它继续被当作有效地址提交。
- 如果页面只是换地址,确认 301 指向的是内容最接近的页面,而不是统一扔到首页。
- 批量下线时按批次进行,别在一天内改动成千上万个 URL 的状态码。
- 过一段时间再抽查几个 URL,确认索引中的状态与摘要文字已经更新。
下线不是删文件那么简单:选对状态码、保住抓取通道、清理站内入口,三件事都做到,索引里的旧记录才会慢慢退场。