import { NextRequest, NextResponse } from 'next/server'
// Simulates what might happen if a proxy or firewall modifies the
// request based on a condition that changes after the prefetch but before
// the actual navigation.
//
// The proxy modifies the request based on special search parameters, but only
// during a navigation — not during a prefetch.
export const config = {
matcher: [
{
source: '/:path*',
// Exclude prefetch requests
missing: [{ type: 'header', key: 'Next-Router-Prefetch' }],
},
],
}
export default function proxy(req: NextRequest) {
const mismatchRedirect = req.nextUrl.searchParams.get('mismatch-redirect')
if (mismatchRedirect) {
// Redirect to the given URL.
return NextResponse.redirect(new URL(mismatchRedirect, req.url))
}
const mismatchRewrite = req.nextUrl.searchParams.get('mismatch-rewrite')
if (mismatchRewrite) {
// Rewrite to the given URL.
return NextResponse.rewrite(new URL(mismatchRewrite, req.url))
}
}