404 not found的意思是:服务器收到了请求,但找不到对应的资源,于是返回HTTP状态码404。它不等于网站宕机,也不等于域名不存在。要把这个含义变成可复用检查清单,关键一步是先按“请求是否到达服务器、服务器是否主动返回404、返回404是否符合预期”三层分类,再决定处理顺序。时间和人手有限时,先处理“不该404却404”的链接,再处理“应该404却返回200”的软404,最后才清理历史死链。
检查清单不能只写“看404”,而要写清判断对象。建议准备三列:请求地址、返回状态码、期望结果。期望结果只有两种:这个地址应该有内容,或者这个地址本来就不该有内容。前者返回404是异常,后者返回404是正常。
这一步的产出不是“404列表”,而是“异常404列表”。没有期望结果作对照,404数量再多也无法判断优先级。
时间有限时,不要平均用力。可执行顺序如下:
这里最关键的一步是区分“链接写错”和“资源已删除”。链接写错就改链接;资源已删除才考虑跳转。把已删除页面全部301到首页,会让用户和搜索引擎都难以判断目标内容,通常不是好做法。
看到404时,可能原因不止一种:路径确实不存在、服务器重写规则错误、大小写不一致、后端应用路由未匹配、权限或代理配置异常。已经定位的原因才能写进修复记录,未定位的只能列为待查项。
curl -I查看响应首行状态码,确认是404还是500、403。robots.txt限制抓取。抓取限制不等于索引移除,也不等于页面一定返回404。验证通过的标准是:异常404列表中的每一项,要么已能访问,要么已按预期返回404或410,并且站内不再有链接指向错误地址。
可复用清单的价值在于定期执行,而不是一次清完。建议每月或每次改版后做一次最小检查:
如果只维护一张表,就维护“异常404及处理状态”表。字段包括地址、发现日期、来源、期望结果、处理方式、验证日期。这样换人接手时,不必重新判断每个404的含义。
下一步:从服务器日志导出最近一周的404请求,按上述三列建立表格,先处理站内链接指向的异常404,并在一周后复查同一批地址的状态码。