Next.js中间件重定向排除特定页面(T3栈场景)
解决T3栈开发阶段全局重定向到/signup的Matcher配置问题
问题分析
你之前的Matcher配置未生效,核心原因是缺少对带后缀静态文件的排除规则,同时Next.js内部路径的排除不够全面,导致部分请求被错误重定向,或是出现逻辑遗漏。
修正后的实现方案
直接用Matcher替代繁琐的if判断,只需调整config里的Matcher规则,确保所有需要排除的路径都被覆盖:
import { NextRequest, NextResponse } from "next/server"; export function middleware(request: NextRequest) { return NextResponse.redirect(new URL("/signup", request.url)); } export const config = { matcher: [ // 匹配所有路径,排除以下特殊路径: "/((?!signup|_next|_axiom|_api|.*\\..*).*)", ], };
规则说明
!signup:排除/signup及其所有子路径,彻底避免重定向循环!_next:全面排除Next.js的内部资源路径(包括静态文件、图片、数据路由等),比单独指定_next/static更省心!_axiom、!_api:保留你需要排除的服务端工具和API路由!.*\\..*:匹配所有带后缀的静态文件(如.png、.css、.js、favicon.ico等),避免静态资源请求被错误重定向
验证效果
配置完成后,除了上述排除的路径,所有客户端请求都会被自动重定向到/signup,无需在Middleware里写一堆条件判断,后续新增排除规则只需在Matcher里添加即可,扩展性更强。
内容的提问来源于stack exchange,提问作者MM1010
相关产品推荐
相关产品推荐

