Ce face redirect() și permanentRedirect() - Redirecționări programatice pe server
Funcțiile redirect() și permanentRedirect() pot fi apelate în Server Components, Route Handlers și Server Actions.
Sub capotă, funcția aruncă o eroare specială internă Next.js (de tip `NEXT_REDIRECT`) care întrerupe randarea și trimite antetul HTTP `Location` adecvat.
`redirect()` emite un cod HTTP `307 Temporary Redirect` (implicit), iar `permanentRedirect()` emite codul `308 Permanent Redirect` util pentru schimbări definitive de SEO.
Exemple
Exemplul 1: Protejarea unei pagini de profil și redirecționarea la login dacă lipsește sesiunea
Oprește randarea și trimite vizitatorul neautentificat la pagina de autentificare.
import { redirect } from 'next/navigation';
import { preiaSesiune } from '@/lib/auth';
export default async function PanouAdmin() {
const sesiune = await preiaSesiune();
if (!sesiune) {
redirect('/login?eroare=neautorizat');
}
return <h1>Panou de Administrare</h1>;
}
Ieșire în terminal
Clientul este redirecționat instant către /login.
Greșeli frecvente
- Apelarea redirect() în interiorul unui bloc try/catch fără a re-arunca eroarea; dacă prinzi eroarea în catch (ex: `catch (e) { … }`), redirecționarea va fi înghițită și nu va funcționa.
Comenzi înrudite
app/not-found.tsx - Pagina personalizată 404 (notFound()): Randează interfața 404 atunci când este apelată funcția notFound() sau când o rută nu există.Hook-ul useRouter() din next/navigation - Navigare programatică: Permite declanșarea tranzițiilor de navigare din interiorul funcțiilor și componentelor de client.