Capítulo 320 de 456
Três formas de lidar com redirecionamento no Next.js (Pages Router), cada uma com seu momento e caso de uso, mais um padrão avançado para gerenciar milhares de redirects sem redeploy.
useRouter().push(): redirect client-side dentro de um componente (evento de usuário).redirects em next.config.js: redireciona uma rota de entrada para outro destino, com suporte a path matching e wildcard; roda antes do Proxy.NextResponse.redirect no Proxy: redirect condicional (ex.: autenticação) baseado na request; roda depois de redirects e antes da renderização.const nextConfig: NextConfig = {
async redirects() {
return [
{ source: '/about', destination: '/', permanent: true },
{ source: '/blog/:slug', destination: '/news/:slug', permanent: true },
]
},
}
next.config.js.export function proxy(request: NextRequest) {
const isAuthenticated = authenticate(request)
if (isAuthenticated) return NextResponse.next()
return NextResponse.redirect(new URL('/login', request.url))
}
export const config = { matcher: '/dashboard/:path*' }
matcher limitando o escopo.| API | Propósito | Onde | Status Code |
|---|---|---|---|
useRouter | Navegação client-side | Componentes | N/A |
redirects em next.config.js | Redirect de path de entrada | next.config.js | 307 ou 308 |
NextResponse.redirect | Redirect condicional | Proxy | Qualquer |
next.config.js: plataformas como Vercel limitam a 1.024; usar Proxy + redirect map + bloom filter em vez disso.redirects (next.config.js) roda antes do Proxy.permanent: true gera 308, false gera 307.next.config.js.useRouter é só para navegação programática dentro de componentes, não para regras de redirect declarativas.NextResponse.redirect.