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

NextJS 13如何为特定页面设置basePath

NextJS 13 实现特定页面跳过basePath的方案

问题拆解

你要的效果是:

  • 所有/auth/*开头的路径,URL里不带/app前缀,直接对应项目里的/auth页面
  • 其他页面必须通过/app/xxx访问,对应项目根目录下的页面

你之前的rewrites配置报错,是因为几个关键问题:

  1. rewrites没有作为nextConfig的属性写在对象里,导致返回格式无效
  2. 没用到通配符:path*来匹配/auth下的所有子路径
  3. 缺少basePath: false,没让这条rewrite跳过全局的basePath设置
  4. 映射逻辑搞反了

正确的next.config.js配置

直接替换成下面的代码:

const nextConfig = {
  experimental: {
    appDir: true,
  },
  basePath: "/app",
  async rewrites() {
    return [
      // 处理所有/auth/*路径,不加载basePath
      {
        source: "/auth/:path*",
        destination: "/auth/:path*",
        basePath: false, // 核心:这条规则不使用全局basePath
      },
      // 其他路径沿用basePath的默认映射(可选,basePath本身会自动处理)
      {
        source: "/app/:path*",
        destination: "/:path*",
      },
    ];
  },
};

module.exports = nextConfig;

页面结构对应

确保你的App Router目录结构和URL对应上:

  • 项目里的app/auth/login/page.js → 访问/auth/login(不带/app)
  • 项目里的app/dashboard/page.js → 访问/app/dashboard(带/app)

验证方法

启动项目后测试:

  1. 打开/auth/login,URL里没有/app,页面正常加载
  2. 打开/app/dashboard,URL显示/app前缀,页面正常加载

额外提示

如果auth页面用了next/image,直接用相对路径引用图片就行,不用加/app前缀;如果是API路由,/api/auth/xxx也会自动映射到项目里的app/api/auth/xxx/route.js,不用额外配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 03:00:59