Nextjs Middleware

Nextjs Middleware

request -> middleware -> (modified request or modified response)

Code

// Example of default export
export default function middleware(request) {
  // Middleware logic
    if (url.searchParams.has('new')) {
    const val = url.searchParams.get('new')
    url.searchParams.delete('new')

    if (val === 'true') {
      // Redirect to path with --new suffix and no query parameters
      const newUrl = new URL(url.pathname + '--new', url.origin)
      return NextResponse.redirect(newUrl, 308)
    } else {
      return NextResponse.redirect(url, 308)
    }
  }


  // Check request
   if (url.pathname.startsWith('/api/')) {
    const path = req.nextUrl.pathname.replace('/api/', '')

    if (pathsToSkip.includes(path)) {
      return NextResponse.next()
    }
    // Redirect to proxied URL
    return new Response('Permanent Redirect', {
      status: 308,
      headers: {
        location: getProxiedRequestUrl(req, path),
      },
    })
  }
}

// request -> if match -> run middleware
export const config = {
  matcher: '/about/:path*',
};