区分404错误页面的正常与异常结果,核心是两件事:服务器返回的HTTP状态码是否为404,以及页面内容是否符合“资源确实不存在”的语义。状态码是404但内容显示“服务器错误”“请稍后再试”,属于异常;状态码是200却显示“页面不存在”,也属于异常。下面给出一份可执行清单,每项写明查什么、怎么查、结果说明什么。
要查什么:目标URL返回的状态码。
怎么查:用命令行执行 curl -I https://example.com/不存在的路径,或打开浏览器开发者工具的Network面板,查看该请求的Status。关注首行响应码,不要被页面正文的“404”字样误导。
结果说明什么:返回404或410,说明服务器正确表达了“资源不存在”,属于正常。返回200,说明服务器把错误页当正常页面输出,搜索引擎可能将其当作有效页面收录,属于异常。返回301或302,说明该URL被重定向到别处,若重定向目标仍是错误页,需要继续追踪最终地址的状态码。返回5xx,说明是服务器端故障,不是“页面不存在”,属于异常。
要查什么:页面正文是否明确表达“所请求的内容不存在或已被移除”。
怎么查:直接访问一个确定不存在的URL,阅读标题、主标题和正文。检查是否出现“页面不存在”“链接已失效”“内容已删除”等表述,同时确认没有混入“系统繁忙”“数据库连接失败”“权限不足”这类与资源缺失无关的提示。
结果说明什么:内容与404语义一致,属于正常。内容指向服务器错误、权限问题或跳转到首页却不说明原因,属于异常。把用户直接重定向到首页而不返回404,会让用户和搜索引擎都无法判断原资源是否还存在,通常视为异常处理。
要查什么:是否存在“状态码200、内容却是错误提示”的软404。
怎么查:对同一批不存在的URL批量执行 curl -I,把状态码为200的URL挑出来,再逐个查看页面正文。也可以对比正常内容页与错误页的模板差异,看错误页是否复用了正常页面的状态码。
结果说明什么:状态码200加错误提示,属于软404,是典型异常。它会让搜索引擎把无效地址当成有效页面,浪费抓取配额,也可能让用户误以为页面只是暂时显示异常。修正方向是让服务器对不存在的资源返回404或410,而不是返回200。
要查什么:404页面是否被robots.txt屏蔽,是否被站点地图或内链错误引用。
怎么查:打开 robots.txt,确认是否对错误页路径设置了Disallow;检查站点地图中是否包含已知不存在的URL;用站点爬虫工具或手动抽查内链,看是否有链接指向已失效地址。
结果说明什么:robots.txt的抓取限制不等于可靠的索引移除,被屏蔽的URL仍可能因外部链接出现在搜索结果中。站点地图不保证收录,把404地址放进站点地图属于配置异常。发现内链指向404,说明链接维护有问题,应修正链接或保留404并让用户获得清晰提示。
curl -I,记录状态码。下一步:从你站点中挑选一个已知失效的URL,按上面的流程记录状态码与页面内容,再决定是保留404、改为410,还是设置301重定向。