解决404 not found时,日志里最先要核对的是请求路径、HTTP状态码、来源页URL、User-Agent和请求时间。这五个字段能区分“页面真的被删了”“链接写错了”“爬虫抓了旧地址”还是“服务器配置漏了重写规则”。时间和人手有限时,优先看状态码和请求路径的组合,再决定是改链接、补重定向还是恢复内容。
不同日志记录的字段不一样。Web服务器访问日志一般包含客户端IP、时间、请求方法、请求路径、状态码、来源页和User-Agent;应用日志可能只记录异常堆栈。先确认你手上是哪一种,再按下面的字段检查。
请求路径:完整记录被访问的URL路径和查询字符串,判断是旧链接还是拼写错误。HTTP状态码:404说明资源未找到,但要确认是服务器返回的404,还是应用内部抛出的404。来源页URL:如果来源页是站内页面,说明站内链接需要修;如果是外部站点,说明外链指向了失效地址。User-Agent:区分普通用户、搜索引擎爬虫还是监控工具,决定处理优先级。请求时间:判断问题是持续存在还是某个时间点后突然出现,便于关联改版或发布操作。如果日志里缺少来源页或User-Agent,不要凭猜测下结论。可以先补上这些字段的记录,再重新观察一段时间。
时间和人手有限时,建议按以下顺序核对:
这里最关键的一步是把请求路径和来源页配对看。只看到404路径,你只能知道哪个地址失效;加上来源页,才能知道用户或爬虫是从哪里走到这个失效地址的,修复才有方向。
假设日志显示路径 /old-page 返回404,来源页是站内文章页,User-Agent是普通浏览器。这个组合说明站内文章里有一个指向 /old-page 的链接已经失效,改文章里的链接即可。如果来源页是外部域名,且该路径还有搜索流量,则应考虑用301把 /old-page 指向当前有效页面。
修改链接或添加重定向后,不要只看一次日志。可以按下面几项验证:
需要区分的是:robots.txt 的抓取限制不等于可靠的索引移除,站点地图也不保证收录。HTTPS同样不保证安全无漏洞或排名。这些手段不能替代对404本身的修复。
404不会只出现一次。可以在每次改版、删除页面或调整URL结构后,固定检查一遍日志中的请求路径、状态码和来源页。对确认不再使用的旧路径,提前配置重定向;对确实应该消失的页面,让它返回404而不是软404或跳转到首页。
如果日志量太大,先按状态码筛出404,再按请求路径聚合计数,优先处理高频路径。这样在时间和人手有限的情况下,也能把精力放在影响最大的失效地址上。
下一步:打开最近一段时间的访问日志,按状态码筛出404记录,导出请求路径和来源页两列,按出现次数排序,从第一条开始核对。