Nuxt SSR部署后首页/index路由404问题求助
解决Nuxt SSR部署后首页刷新404的问题
看起来你的问题核心是Nuxt SSR部署到服务器后,首页(根路径)刷新时返回404,但其他路由、内部跳转首页都正常——这在Apache反向代理搭配Nuxt的场景里挺常见的,我来帮你拆解下可能的原因和解决办法:
1. 优先排查Apache反向代理规则问题
你的.htaccess规则可能没有正确处理**空路径(根目录)**的请求。当前规则里的^(.*)理论上包含空字符串,但Apache在处理根路径时可能存在匹配优先级问题。建议你更新规则,专门针对根路径做处理,同时补全必要的代理配置:
<IfModule mod_rewrite.c> RewriteEngine On RewriteBase / # 单独处理根路径请求 RewriteRule ^$ http://127.0.0.1:3000/ [P,L] # 处理其他所有路径 RewriteCond %{HTTP_HOST} ^my-app\.com$ [OR] RewriteCond %{HTTP_HOST} ^www\.my-app\.com$ RewriteRule ^(.*)$ http://127.0.0.1:3000/$1 [P,L] </IfModule> # 确保请求头正确传递给Nuxt ProxyPreserveHost On
另外,别忘了确认Apache已经开启了必要的模块:
a2enmod rewrite proxy proxy_http systemctl restart apache2
2. 检查Nuxt的基础配置
虽然你说nuxt.config没做复杂配置,但还是要确认几个关键项:
- router.base:确保它设置为
'/',不要自定义其他路径,否则根路由会错位:export default { router: { base: '/' } } - server监听地址:确保Nuxt监听的地址能被Apache访问到,比如:
export default { server: { host: '0.0.0.0', // 或127.0.0.1,只要Apache能访问 port: 3000 } }
3. 验证Nuxt服务本身是否正常
先跳过Apache代理,直接在服务器本地访问http://127.0.0.1:3000/:
- 如果能正常加载首页,说明问题100%出在Apache代理规则上;
- 如果还是返回404,那要检查Nuxt的构建和启动流程:
- 确认你在服务器上执行过
npm run build(SSR必须先构建再启动); - 查看
npm run build的日志,确认是否生成了首页路由:ℹ Generating pages ℹ Page "/" generated ℹ Page "/login" generated - 检查
pages/index.vue的文件名是否正确(必须是小写的index.vue,不能有拼写错误)。
- 确认你在服务器上执行过
4. 确认PM2启动命令的正确性
你的PM2启动命令是pm2 start npm --name "my-app" -- start,要确保package.json里的start脚本指向正确的SSR启动命令:
{ "scripts": { "dev": "nuxt", "build": "nuxt build", "start": "nuxt start" // 必须是nuxt start,不是nuxt dev } }
按照上面的步骤逐一排查,应该能解决首页刷新404的问题。
内容的提问来源于stack exchange,提问作者Doug
相关产品推荐
相关产品推荐

