遇到 404 not found,先别急着改页面,而要先判断这个 URL 当前处于哪一层:用户或爬虫访问时返回什么状态码、搜索引擎是否抓取过、抓取后是否进入索引。访问抓取与索引结果是两个阶段,解决 404 也要分开处理:访问层看响应码,抓取层看日志与抓取工具,索引层看搜索结果与索引状态报告。
访问层解决的是“请求这个 URL 时服务器返回什么”。抓取层解决的是“搜索引擎爬虫是否来过、拿到什么”。索引层解决的是“这个 URL 是否被收录并可被搜索展现”。
curl -I 查看响应状态码。若返回 404,说明访问层已明确不存在。site: 加完整 URL 做初步判断,注意它只是参考,不等于官方索引状态。多人协作时,把这三层结论写进同一张交付表:URL、访问返回码、最近抓取时间、索引状态、处理动作。这样能减少“页面明明能打开,为什么搜索没有”这类返工。
先判断这个 404 是“本来就不该存在”还是“曾经存在但被删或改址”。
这里最关键的一步是:不要用 robots.txt 屏蔽一个已经返回 404 的 URL 来代替索引移除。 robots.txt 限制的是抓取,不是索引移除;如果 URL 已被索引,屏蔽抓取后搜索引擎可能仍保留旧索引,甚至因为无法抓取而看不到 noindex。正确顺序通常是:先让页面可抓取,再返回 404/410 或加 noindex,最后根据索引状态决定是否提交移除。
抓取成功不等于进入索引。一个 URL 可能被抓取多次但仍未收录,也可能已收录但搜索结果不展现。验证时看四类信号:
curl -I 确认返回码与预期一致,301 要跟到最终 200。假设一个旧活动页已删除并返回 404,但搜索结果仍显示旧标题。此时不要立刻把 404 改成 301 到首页。先确认该 URL 是否仍被索引:如果仍被索引,可保持 404,并等待重新抓取;若长期不消失,再考虑提交移除请求。这个判断适用于“页面确实不再需要”的条件;如果页面有等价新内容,301 更合适。
404 不是一次性问题。改版、下架、参数链接、大小写不一致都会持续产生 404。维护阶段建议固定三件事:
交付时写明:哪些 404 保留、哪些 301、哪些提交移除、复查日期是什么。这样协作方不用猜,也能减少反复改状态码的返工。
下一步:选一个当前报 404 的 URL,按“访问返回码 → 日志抓取记录 → 索引状态”顺序各查一次,再决定是保留 404、做 301,还是提交移除。