如何使用 Nextjs 中间件匹配器重定向用户

问题描述 投票:0回答:1

我想将 nextjs 中间件匹配器中的用户从“admin”页面重定向到“login”页面,但是重定向不起作用,我尝试将网址与“/admin”匹配,例如“www.mydomain.com/” admin”并重定向到“www.mydomain.com/login”,但它不起作用:


export function middleware(request) {
  // Middleware logic here
  const url = request.nextUrl.clone();

  // Example: Redirect if path is `/admin`
  if (url === '/admin') {
    return NextResponse.redirect(new URL('/login', request.url));
  }

  return NextResponse.next(); // Continue to the requested page
}

// Configure the matcher to only run middleware on specific paths
export const config = {
  matcher: ['/admin', '/dashboard/:path*'], // Specify exact paths or patterns
};

  • 请注意,我已经删除了其他内容,例如身份验证和检查用户是否经过身份验证,并决定是否重定向(如果是访客)。

我在网上查找了代码示例,询问了与我合作的一所大学,并尝试阅读有关 nextjs 的博客。

next.js middleware matcher
1个回答
0
投票

尝试根据 url 的路径名而不是整个 url 来匹配 url。

  if (url.pathname === '/admin') {
    return NextResponse.redirect(new URL('/login', request.url));
  }

另外,我会向您推荐有关中间件观察程序的 nextjs 文档,以查找 nextjs 中间件观察程序的 github 代码示例。祝你好运

© www.soinside.com 2019 - 2024. All rights reserved.