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

NextJS部署到Vercel生产环境后Rewrites规则不生效问题

Vercel环境NextJS Rewrite规则不生效的解决方法

  • 先检查项目根目录是否存在vercel.json文件,该文件的路由规则优先级高于next.config.js,如果有重复配置或者其他匹配/api/*的redirects/headers规则,会直接阻断Rewrite生效,清理冲突规则即可。
  • 检查项目pages/api(Pages Router)或者app/api(App Router)目录下是否存在对应路径的API文件,Vercel生产环境会优先匹配已存在的本地API路由,优先级高于Rewrite规则,移除冲突的本地API文件即可。
  • 你当前配置中同时在beforeFiles/afterFiles/fallback三个优先级队列写了重复的Rewrite规则,会导致Vercel边缘节点的路由匹配逻辑冲突,简化配置只保留beforeFiles队列的规则即可,参考配置如下:
async rewrites() {
  return {
    beforeFiles: [
      {
        source: "/api/:path*",
        destination: "https://example.com/api/v1/:path*",
      }
    ]
  }
}
  • 如果是Next 13+ App Router项目,建议直接使用中间件实现代理,兼容性更强,不会出现环境差异问题,示例代码如下:
// 项目根目录新建middleware.ts
import { NextResponse } from 'next/server'
import type { NextRequest } from 'next/server'

export function middleware(request: NextRequest) {
  if (request.nextUrl.pathname.startsWith('/api/')) {
    const targetPath = request.nextUrl.pathname.replace('/api/', '/api/v1/')
    const targetUrl = new URL(targetPath + request.nextUrl.search, 'https://example.com')
    return NextResponse.rewrite(targetUrl)
  }
  return NextResponse.next()
}

export const config = {
  matcher: '/api/:path*',
}
  • 最后确认部署的分支为生产分支,且Vercel项目设置中没有开启覆盖NextJS配置的路由相关选项,重新部署即可生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:18:00