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

Next.js中间件出现过多重定向问题,求解决方案

解决Next.js中间件过多重定向问题

你的代码触发无限重定向的核心原因是:只要路径以/training开头就执行重定向,而重定向的目标路径/training/IN/contact-us同样满足/training开头的条件,导致每次重定向后都会再次进入中间件,重复执行重定向操作,形成无限循环。

解决方案一:排除重定向目标路径

在判断逻辑里增加排除规则,当当前路径已经是目标路径时,直接放行不执行重定向:

import { NextResponse } from 'next/server'

export function middleware(request) {
  const targetPath = '/training/IN/contact-us';
  
  // 当前路径已是目标路径,直接返回
  if (request.nextUrl.pathname === targetPath) {
    return NextResponse.next();
  }

  if (request.nextUrl.pathname.startsWith('/training')) {
    return NextResponse.redirect(new URL(targetPath, request.url));
  }
}

export const config = {
  matcher:["/training/:path*","/","/training"]
}

解决方案二:缩小触发重定向的路径范围

如果你的需求仅针对/training根路径,而非所有/training开头的子路径,可以修改判断条件:

import { NextResponse } from 'next/server'

export function middleware(request) {
  // 仅当路径是/training根路径时执行重定向
  if (request.nextUrl.pathname === '/training') {
    return NextResponse.redirect(new URL('/training/IN/contact-us', request.url));
  }
}

export const config = {
  matcher:["/training/:path*","/","/training"]
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 02:52:11