很多人把收录当成内容好坏的问题,但蜘蛛在判断内容之前,先要拿到一个 HTTP 状态码。状态码是服务器给出的第一层信号,它决定了蜘蛛接下来是解析页面、放弃这个 URL,还是过几天再来看看。
抓取和收录分两步,状态码作用在前一步
抓取是蜘蛛把 URL 下载下来,收录是下载结果经过判断后写进索引。状态码主要影响第一步:蜘蛛看到什么码,决定要不要往下走。如果返回的是错误状态,后面的内容质量根本用不上,页面压根进不了正文解析和索引评估环节。
常见状态码各自的分工
200:正常,但不等于会收录
200 只说明这个 URL 有内容可读。蜘蛛拿到 200 后会继续解析 HTML、抽取正文、看 canonical、看 noindex,再决定是否入库。所以 200 是必要条件,不是充分条件。
这里还有一个容易混淆的点:noindex 通常写在 meta 标签或响应头里,页面本身仍然返回 200,蜘蛛也能正常抓取,只是不允许写入索引。它和 404 的区别在于,404 是“这里没有东西”,noindex 是“这里有东西,但别放进去”。
301 和 302:一个搬家,一个临时借住
301 表示永久迁移,原 URL 的信号会逐步转移到新地址,蜘蛛会把旧地址从索引里替换掉。302 是临时跳转,蜘蛛一般会保留原 URL,并反复回来检查它是否恢复。旧地址确实不用了就用 301;只是短期切换,比如活动页、A/B 测试,用 302,别拿 302 当长期重定向使。
404 和 410:都是“没了”,态度不同
404 表示资源不存在,410 表示资源曾经存在且已永久删除。两者都会让 URL 逐步退出索引,但 410 的表态更明确,蜘蛛放弃得更快。页面删了但内容还想换个形式保留,别急着用 404;确认不要了,410 更干脆。需要注意的是,返回 404 的页面如果还挂在导航和内链里,蜘蛛会反复来撞墙,白白消耗抓取配额。
503 和 500:服务器问题,别让蜘蛛误会
503 表示服务暂时不可用,配合 Retry-After 响应头,蜘蛛会稍后再来,通常不会立刻把页面从索引里删掉。500 是服务器内部错误,短时间大量出现时,蜘蛛会主动降低抓取频率。如果只是维护或临时故障,用 503 而不是让页面全变成 404,否则恢复之后还要重新等一轮收录。
软 404:最容易被忽略的一种
软 404 指的是服务器返回 200,但页面内容是“没有结果”“商品已下架”“该内容不存在”之类的提示。蜘蛛拿不到错误码,会把它当正常页面解析,结果索引里留下一堆空壳页面,正文几乎为空。
常见来源包括:筛选出空结果的列表页、下架商品保留的详情页、参数错误跳到的兜底页。处理方式有两种:确实不该存在的,改成 404 或 410;还有价值的,比如缺货但会补货的,就补上替代推荐和说明内容,让它成为真正的 200。
几个实操建议
- 改版批量重定向时,确认跳转链条只有一跳,避免 301 套 301。
- 删除页面后同步清理内链和 sitemap,别让 404 长期挂在导航里。
- 临时维护优先用 503 加 Retry-After,而不是直接关站返回 404。
- 定期抽查“有流量但打开没内容”的 URL,看是否存在软 404。
- 状态码变更后,观察服务器日志里蜘蛛的回访频率,作为是否生效的参照。
状态码不是技术细节,而是你在向蜘蛛说明这个 URL 的命运。该删的删干净、该转的转到位、该等的说清楚,收录这件事会少走很多弯路。