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

Next.js能否将API路由配置在根路径而非默认的/api路径下?

实现方案

完全可以实现,根据你是否需要动态生成接口内容,可以选以下任意一种方案:


方案1:静态内容直接放public目录(最简单)

如果你的apple-app-site-association内容是固定的,不需要动态生成:

  1. 直接在项目根目录的public文件夹下新建名为apple-app-site-association的文件,不要加.json后缀
  2. 把你的配置内容写入该文件即可

Next.js会自动将public目录下的资源映射到网站根路径,直接访问http://localhost:3000/apple-app-site-association就能正常获取内容。
如果需要自定义响应头,可以在next.config.js中添加配置:

const nextConfig = {
  async headers() {
    return [
      {
        source: '/apple-app-site-association',
        headers: [
          {
            key: 'Content-Type',
            value: 'application/json',
          },
        ],
      },
    ]
  },
}

方案2:配置重写规则(保留原有API动态逻辑)

如果你的接口需要动态计算返回内容、做校验等逻辑,不想改动原有API代码,可通过重写实现路径隐藏:
在项目根目录的next.config.js中添加以下配置:

/** @type {import('next').NextConfig} */
const nextConfig = {
  async rewrites() {
    return [
      {
        source: '/apple-app-site-association',
        destination: '/api/apple-app-site-association',
      },
    ]
  },
}

module.exports = nextConfig

配置完成后重启服务,访问根路径地址会自动转发到原有/api下的接口,路径不会显示/api前缀。


方案3:App Router直接写根路由(Next.js 13+)

如果你用的是Next.js 13+的App Router模式,不需要额外配置,直接新建路由文件即可:
在app目录下创建apple-app-site-association/route.js(或.ts)文件,写入接口逻辑:

export async function GET() {
  // 你的动态逻辑
  const data = {
    applinks: {
      apps: [],
      details: [
        {
          appID: "你的TeamID.你的应用BundleID",
          paths: ["*"]
        }
      ]
    }
  }

  return Response.json(data, {
    headers: {
      "Content-Type": "application/json"
    }
  })
}

该路由默认对应的访问路径就是http://localhost:3000/apple-app-site-association。


注意事项

  • 苹果的通用链接校验要求apple-app-site-association返回的Content-Type必须为application/json,不要带额外后缀
  • 所有配置修改完成后需要重启Next.js服务才会生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 19:54:03