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

Next.js Middleware Matcher重定向失效求助:/admin跳转/login失败

问题分析与修复

你的重定向逻辑未生效的核心原因是错误地将NextURL对象与字符串进行比较:
request.nextUrl.clone()返回的是一个NextURL实例对象,不是单纯的路径字符串,所以if (url === '/admin')这个判断永远不会成立,重定向代码根本没执行。

修复后的代码

import { NextResponse } from 'next/server';

export function middleware(request) {
  // 直接读取请求的路径,仅修改URL时才需要clone
  if (request.nextUrl.pathname === '/admin') {
    return NextResponse.redirect(new URL('/login', request.url));
  }

  return NextResponse.next();
}

export const config = {
  matcher: ['/admin', '/dashboard/:path*'],
};

额外验证点

  • 确认middleware文件位置正确:
    • App Router项目:放在app/middleware.js(或.ts)
    • Pages Router项目:放在pages/_middleware.js(或.ts)
  • 测试前清空浏览器缓存,避免旧路由缓存干扰结果
  • 检查是否有其他路由规则或残留代码影响重定向逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 14:04:55