检查URL路径是否正确
最常见的404问题就是拼写错误。比如你想访问 /api/user,但不小心写成了 /api/users,服务器找不到对应资源自然就返回404。这种情况在开发调试时特别常见,尤其是前端和后端接口约定不一致的时候。
建议打开浏览器的开发者工具,切换到 Network 标签,查看具体发出的请求地址。对比后端文档或路由配置,确认路径、大小写、斜杠有没有遗漏。
确认后端路由是否注册
有时候前端没问题,问题出在后端。比如用 Express 写接口,忘了挂载某个路由模块:
const express = require('express');
const app = express();
// 忘了这行
// app.use('/api/user', userRouter);
app.listen(3000);这时候无论前端怎么请求 /api/user/info 都会404。检查一下主文件有没有正确引入并使用路由中间件。
静态资源服务路径配置
如果你是通过 Nginx 或 Express 提供 HTML 页面,也可能因为静态文件路径没配对导致404。比如页面里引用了 /static/js/app.js,但服务器根本没把 static 目录映射出来。
Express 中需要这样设置:
app.use('/static', express.static('public'));Nginx 则要确保 location 块匹配正确:
location /static/ {
alias /var/www/myapp/public/;
}前端路由与后端冲突
单页应用(SPA)常遇到这个问题。用户直接访问 /user/profile,浏览器向服务器请求这个路径,但后端没有这个接口,返回404。其实这个路径应该由前端路由接管。
解决方案是在 Nginx 配置 fallback:
location / {
try_files $uri $uri/ /index.html;
}这样当文件不存在时,自动返回 index.html,交给前端处理路由跳转。
代理配置别搞错
本地开发时常用 webpack 或 vite 的 proxy 功能。如果代理目标写错,比如把 http://localhost:8080 代理到了 http://localhost:8081,而那个端口根本没服务,结果就是404。
vite.config.js 示例:
export default {
server: {
proxy: {
'/api': {
target: 'http://localhost:3000', // 确保这是正确的后端地址
changeOrigin: true
}
}
}
}改完记得重启开发服务器。
检查是否有重定向干扰
有些服务器配置了自动补全斜杠或者强制跳转,可能在中间环节把路径改了。比如访问 /api/user 被重定向成 /api/user/,而后端只监听了无斜杠版本,新请求就404了。
这时候看 Network 面板有没有301/302记录,顺藤摸瓜找到是哪层做的重定向,再进对应配置调整。