404 not found的意思是服务器收到了请求,但找不到对应的资源。与开发人员交接这类问题时,重点不是反复说“页面打不开了”,而是把可复现的请求、响应状态和判断依据一起交给对方,让开发能直接定位是链接写错、路由缺失、文件被删,还是重写规则失效。
常见误解是:页面上显示“404”就一定是服务器返回了404状态码。实际上,有些站点会用自定义错误页承接多种状态,也可能由前端路由在客户端渲染出404外观,而HTTP响应码是200。这两种情况交接方式完全不同。
判断方法很直接:打开浏览器开发者工具的Network面板,刷新出问题的地址,查看该请求的Status Code。如果主文档返回404,就按资源缺失交接;如果返回200,就把前端路由或错误页配置作为排查方向。
开发人员最需要的是能复现问题的完整输入,而不是结论。建议按下面清单收集,缺一项都可能让排查来回反复。
如果问题只在特定条件下出现,例如登录后、移动端或某个来源页面,要把这个条件写清楚。开发可以据此判断是路由参数、权限校验还是跳转来源导致。
假设一个商品页从列表点击后进入404,而直接粘贴URL能打开。可以这样交接:
GET https://example.com/item/123?from=list 返回404;
GET https://example.com/item/123 返回200。
这个对比说明问题可能与查询参数或来源判断有关,而不是资源本身不存在。开发可以优先检查带参数的请求是否被路由规则或服务端逻辑拦截。这里的域名和路径是示例,实际交接时替换为真实地址,并隐去敏感参数。
如果404出现在过去某个功能或旧版入口上,不要直接写“它原来在某个菜单里,现在应该还在”。旧入口、旧界面和旧跳转机制可能已经调整,没有当前资料时,应把它作为历史现象记录,并说明需要开发确认当前路由表、重写规则或接口是否仍保留。交接的目标是提供线索,不是替开发下结论。
开发修复后,不要只看页面是否能打开。重新用同样的URL、同样的请求方法和同样的条件复现一次,确认状态码符合预期:该返回200的返回200,该做301跳转的返回301且目标可访问。如果涉及搜索引擎抓取,还要注意robots.txt的限制不等于索引移除,站点地图也不保证收录,这些是独立事项,不能和404修复混为一谈。
下一步:把上面清单整理成一条可复现记录,附上状态码和对比请求,再发给开发;如果状态码是200却显示404,优先让前端确认路由命中情况。