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
相关产品推荐
相关产品推荐

