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

如何配置Better-Auth适配Next.js自定义basePath?

Next.js basePath配置后Better-Auth认证API 404问题解决

我将Next.js项目部署到网站子路径,修改了next.config.ts:

const nextConfig: NextConfig = {
    basePath: "/subdomain",
};

除认证功能外其他部分运行正常,但使用Better-Auth认证时,设置自定义basePath后API调用频繁返回404错误。

已尝试操作

  • 将BETTER_AUTH_URL更新为http://localhost:3000/subdomain(本地测试阶段)
  • 在auth.ts中修改authClient和auth实例的basePath为/subdomain,请求http://localhost:3000/subdomain/sign-up/email返回404
  • 将basePath改为/subdomain/api/auth,请求http://localhost:3000/subdomain/api/auth/sign-up/email时控制台报错[Better Auth]: Error [Error: NOT_FOUND],POST请求/api/auth/sign-up/email同样返回404
  • 尝试创建subdomain文件夹并放入api文件夹,结果仍相同

解决方法

核心是让Better-Auth的配置完全适配Next.js的basePath,避免路径前缀不匹配:

  1. 修正Better-Auth的basePath配置
    在auth.ts中,服务端和客户端的auth配置都要设置完整的API路径前缀,即Next.js的basePath + Better-Auth默认的API路由前缀(默认是/api/auth):

    // auth.ts
    import { initAuth } from "@better-auth/react";
    import { BetterAuth } from "@better-auth/nextjs";
    
    export const auth = BetterAuth({
      basePath: "/subdomain/api/auth",
      providers: {
        email: {}, // 你的其他认证配置
      },
    });
    
    export const { useAuth, signIn, signOut } = initAuth({
      basePath: "/subdomain/api/auth",
    });
    
  2. 更新环境变量
    BETTER_AUTH_URL要指向完整的API前缀地址:

    BETTER_AUTH_URL=http://localhost:3000/subdomain/api/auth
    
  3. 不要手动移动API路由文件
    不需要创建subdomain文件夹存放API路由,Next.js的basePath会自动为所有路由(包括API路由)添加前缀,手动移动会导致路径重复,反而引发404。保持API路由在原位置app/api/auth/[...betterauth]/route.ts即可。

  4. 验证请求路径
    测试时确保请求的URL是http://localhost:3000/subdomain/api/auth/sign-up/email,这个路径会被Next.js正确映射到app/api/auth/[...betterauth]/route.ts,同时Better-Auth也能识别到正确的端点。

内容的提问来源于stack exchange,提问作者Evaldo De Paula Souza

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 02:43:35