要判断404状态码是正常淘汰还是配置错误,日志里最该先核对的是:请求时间、请求URL、HTTP方法、状态码、来源页(Referer)、用户代理(User-Agent)、响应字节数和服务器/虚拟主机字段。只看到“404”本身无法下结论,必须把这几项放在一起看。
时间字段用来判断404是持续出现还是集中在某次改版之后;请求URL能看出是旧路径、拼写错误还是参数丢失;HTTP方法能排除POST接口被当页面抓取的情况;状态码字段要确认它确实是404,而不是日志格式里被截断或误读。来源页和用户代理则决定这条404是搜索引擎抓取、站内链接点击,还是外部链接带来的。
核对完字段后,常见选择是“301重定向到新地址”或“保留404并清理入口”。判断依据不是个人偏好,而是这个URL是否还有等价内容、是否还有外部链接和抓取需求。
如果旧URL对应的内容已经迁移到新URL,且来源页或外部链接仍在指向旧地址,301更合适。如果旧URL对应的内容已经彻底删除,没有等价页面,也没有继续被抓取的价值,保留404并修正站内链接更合适。假设某篇文章从/old-guide迁到/new-guide,日志里该旧地址每天仍有来源页点击,这时301能把访问者和抓取需求一起带到新地址;若只是测试路径被误发布,来源页为空、没有外链,保留404并删除站内入口即可。
单独看URL会漏掉参数问题。比如同一路径带不同查询参数反复404,说明入口拼接规则有问题,而不是页面被删除。单独看来源页也会误判:来源页是站内搜索页时,404可能来自站内搜索结果里的失效链接;来源页是外部域名时,则要考虑对方链接是否还能联系修改。
响应字节数也值得看。字节数极小且长期稳定的404,可能是服务器统一错误页;字节数较大且内容不同,可能是应用层返回的自定义404。两者处理方式不同:前者要查服务器或应用路由,后者要查内容管理系统里的页面状态。
改完后不要只看状态码变成200或301就结束。复查时要确认:新地址返回的是200且内容与旧主题一致;301链路没有多跳;站内来源页已经改成新地址;日志里该旧URL的404数量在后续周期内下降。若仍出现404,继续按请求时间、来源页、用户代理三项定位,判断是缓存、外部链接还是新入口再次写错。
下一步可以拿最近七天的404日志,按请求URL聚合,先分出“有来源页”和“无来源页”两组,再决定哪些做301、哪些只清理入口。