遇到404 not found,先不要急着修。第一步是判断它属于正常结果还是异常结果:正常404是服务器明确告诉访客和搜索引擎“这个地址没有内容”,异常404则是本该存在的页面、资源或接口意外失效,或者服务器把其他错误伪装成404。区分方法很直接——看这个URL是否曾经有内容、是否仍被站内链接或外部链接指向、返回状态码是否稳定一致。如果三者都指向“本来就不该存在”,它多半是正常404;如果其中任何一项说明“这里本该有东西”,就要按异常处理。
假设某站点改版时删掉了一个产品页,但首页导航和旧文章里仍有链接指向它。用户点击后看到404页面,搜索引擎抓取时也得到404状态码。这个404是“正常”还是“异常”?答案是:状态码本身正常,但结果异常。因为页面已被删除,返回404没有错;可站内还留着死链,说明清理工作没做完。正确顺序是:先确认该产品是否真的下架,再决定是恢复页面、做301跳转到新地址,还是移除所有指向它的内部链接。常见错误是看到404就一律301到首页,这会让用户和搜索引擎都得不到明确信息,也浪费了原有链接指向的上下文。
满足这三条时,404就是预期结果,不需要“修复”。此时要做的只是确保404页面本身友好:说明页面不存在,给出返回首页或搜索入口,不要自动跳转。
这些情况要先定位原因,再决定处理方式。可能原因包括:文件被误删、路由规则写错、大小写不一致、反向代理配置遗漏、CDN缓存了旧响应。注意,“可能原因”不等于“已经定位的原因”,需要逐项核对日志和实际请求。
时间和人手有限时,不要从全站爬取开始。先处理影响面最大的异常404:
判断标准很简单:一个404如果继续存在不会伤害用户和抓取,就排后面;如果它阻断主要流程或浪费外部链接,就排前面。
有些做法看似“解决”了404,实际制造了新问题。比如把所有404都跳转到首页,用户会困惑,搜索引擎也无法判断原页面状态。再比如用robots.txt屏蔽404地址,这只能阻止抓取,不等于可靠的索引移除。站点地图里列出大量404地址也不会帮助收录。HTTPS同样不保证页面一定可访问,证书正常但路由错误时照样404。正确做法是让状态码如实反映资源是否存在,再分别处理链接和跳转。
下一步:从访问日志里导出最近一周返回404的URL,按访问量排序,先处理前二十条,并记录每条是保留404、301跳转还是修复资源。