检查404页面的前后环节依赖,核心是确认三件事:请求是否真的到达了服务器、服务器是否正确返回404状态码、404页面本身是否依赖了不该依赖的资源或跳转。多人协作时,把这三段拆成可交付的检查项,比笼统地说“404页面没问题”更能减少返工。
一个404页面从用户或爬虫发起请求,到最终看到内容,中间至少经过三个环节,每个环节都可能是问题的来源:
协作交付时,最容易被忽略的是第二和第三环节的交叉:页面看起来正常,但状态码是200;或者状态码是404,但页面里的资源路径写错,导致用户看到无样式的内容。
这一步要回答的是“谁把请求送到404页面的”。常见来源包括:站内链接写错、外部链接失效、旧URL重定向规则配置不当、站点地图里混入了已删除的地址。
可执行的检查方法:
判断结果:如果请求经过多次跳转才落到404,说明入口环节存在依赖问题,需要先修正重定向规则,而不是只改404页面。如果请求直接返回404,入口环节可以暂时排除。
状态码是404页面最关键的交付物。一个常见的返工原因是:页面内容显示“找不到”,但HTTP状态码返回200。这会让搜索引擎把该地址当作正常页面处理,而不是不存在的页面。
检查项:
404,而不是200或302。robots.txt没有意外拦截404页面本身。抓取限制不等于索引移除,如果404页面被robots.txt禁止抓取,搜索引擎可能无法确认该地址的状态。适用条件:这套检查适用于自建站点和常见CMS。如果站点使用了框架自带的路由,需要确认框架的404处理是否覆盖了所有未匹配路径,而不是只覆盖了部分前缀。
404页面也是一个普通页面,它依赖的CSS、JavaScript、图片和字体同样需要能正常加载。如果这些资源的路径是相对路径,而404页面可能在任何目录层级被触发,相对路径就会解析到错误的位置。
可执行的检查步骤:
/not-exist和/a/b/not-exist。判断结果:如果深层路径下的404页面丢失样式或脚本,说明资源路径存在依赖缺陷,需要改为不依赖当前目录的引用方式。
把上述检查固化成一份可交接的清单,能显著减少“我以为你测过了”这类返工:
404。robots.txt没有阻止404页面本身被抓取。验收信号是:换一个人按清单逐项复核,能得到相同的结果,且不需要追问“这个页面是在哪个环境测的”。
下一步建议是:选一个当前会返回404的地址,按上面的入口、服务端、资源三段各跑一遍,把实际观察到的状态码和资源加载结果记录下来,再决定是改重定向规则、改服务端配置,还是改404页面本身的资源引用。