You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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的构建和启动流程:
    1. 确认你在服务器上执行过npm run build(SSR必须先构建再启动);
    2. 查看npm run build的日志,确认是否生成了首页路由:
      ℹ Generating pages
      ℹ Page "/" generated
      ℹ Page "/login" generated
      
    3. 检查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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 08:31:47