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

Nuxt.js设置publicPath后页面404:子目录部署故障排查

解决Nuxt.js 2.x部署到子目录的404与路由刷新问题

你已经配置了publicPath,但Nuxt 2部署到子目录需要同时配置路由基础路径和服务器重写规则,只靠build.publicPath是不够的。我来一步步帮你解决:

1. 完善nuxt.config.js的核心配置

你需要在配置中添加router.base,它负责告诉Nuxt应用的路由根路径,这样所有生成的路由链接都会自动带上子目录前缀:

export default {
  // 路由基础路径,必须和你的子目录路径完全匹配,末尾记得加斜杠
  router: {
    base: '/apps/nuxt/'
  },
  // 静态资源的公共路径,保持你原来的配置,同样建议末尾加斜杠
  build: {
    publicPath: 'https://qa.nicetry.com/apps/nuxt/'
  }
}

修改后重新执行yarn run build,再部署dist目录到服务器。

2. 配置服务器重写规则(关键!)

出现访问子目录404、子路由刷新失效的核心原因是:服务器不知道该把这些子目录下的请求转发到Nuxt的index.html(SPA应用需要前端路由接管)。以Nginx为例,添加以下配置:

location /apps/nuxt {
  # 替换成你服务器上Nuxt dist目录的实际路径
  alias /usr/share/nginx/html/nuxt-dist;
  # 尝试匹配文件、目录,匹配不到就转发到index.html让Nuxt路由处理
  try_files $uri $uri/ /apps/nuxt/index.html;
}

如果是Apache服务器,对应的.htaccess配置如下:

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteBase /apps/nuxt/
  RewriteRule ^index\.html$ - [L]
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteCond %{REQUEST_FILENAME} !-d
  RewriteRule . /apps/nuxt/index.html [L]
</IfModule>

3. 额外注意事项

  • 确保应用内的跳转都使用Nuxt提供的<nuxt-link>组件,而不是原生<a>标签,这样路由会自动带上router.base的前缀,避免出现错误的跳转路径。
  • 检查dist目录部署的位置是否正确,服务器配置中的路径要和实际部署路径完全对应。
  • 确认build后的静态资源(css、js、图片)路径都带有你配置的publicPath前缀,浏览器控制台能正常加载这些资源就说明这部分没问题。

按照以上步骤配置后,访问https://qa.nicetry.com/apps/nuxt应该能正常显示首页,子路由刷新也不会再出现404了。

内容的提问来源于stack exchange,提问作者Donnie

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 03:43:13