⌕ SEO tecnico

Redirect 301, 302, 307 e 308: quale usare e quando

Le differenze tra i codici di reindirizzamento permanenti e temporanei, come li interpretano browser e motori di ricerca e perché evitare meta refresh e JavaScript.

Un redirect è una risposta del server che dice: «la risorsa che cerchi si trova a un altro indirizzo». Sembra un'operazione banale, ma la scelta del codice comunica due informazioni importanti, cioè se lo spostamento è definitivo e se il metodo della richiesta deve essere conservato, e i motori di ricerca ne tengono conto per decidere quale URL mostrare nei risultati.

I quattro codici principali

Codice Significato Metodo conservato Uso tipico
301 spostato in modo permanente non garantito cambio di URL definitivo
302 trovato, spostamento temporaneo non garantito redirect provvisorio
307 redirect temporaneo sì provvisorio con richieste POST
308 redirect permanente sì definitivo con richieste POST

La colonna «metodo conservato» riguarda soprattutto le applicazioni: con 301 e 302 molti client trasformano una richiesta POST in GET quando seguono il redirect, mentre 307 e 308 obbligano a ripetere la richiesta con lo stesso metodo e lo stesso corpo. Per le pagine normali, richieste con GET, la differenza pratica tra 301 e 308 o tra 302 e 307 è nulla.

Permanente o temporaneo: cosa cambia per la ricerca

La vera scelta è tra permanente e temporaneo.

  • Con un redirect permanente (301 o 308) il motore capisce che il nuovo URL sostituisce il vecchio. Con il tempo indicizza la destinazione e vi trasferisce i segnali accumulati.
  • Con un redirect temporaneo (302 o 307) il motore tende a mantenere nell'indice l'URL originale, perché si aspetta che torni.

Google ha chiarito da tempo che i segnali vengono consolidati con entrambi i tipi, ma la scelta del canonico è diversa: un 302 lasciato attivo per anni viene probabilmente trattato come permanente, mentre nel breve periodo può mantenere visibile l'indirizzo vecchio. Il modo più sicuro è usare il codice che descrive la realtà.

Quando usare quale

Usa 301 o 308 quando

  • cambi la struttura degli URL o lo slug di una pagina;
  • migri a un nuovo dominio o passi a HTTPS;
  • unisci due pagine in una;
  • elimini una pagina e ne esiste una sostituta davvero equivalente;
  • normalizzi host, barra finale o maiuscole.

Usa 302 o 307 quando

  • una pagina è momentaneamente fuori servizio e vuoi mandare gli utenti altrove;
  • fai un test A/B lato server che porta parte del traffico a una variante;
  • indirizzi l'utente in base alla lingua o al paese, lasciando comunque accessibili tutte le versioni;
  • un prodotto è temporaneamente sostituito da un altro.

Non usare un redirect quando

  • la pagina è stata eliminata e non c'è un equivalente: meglio un 404 o un 410;
  • vuoi solo indicare la versione principale tra duplicati che devono restare accessibili: in quel caso serve il canonical.

Le alternative da evitare

Meta refresh

<meta http-equiv="refresh" content="0; url=/nuova-pagina/">

Funziona nel browser e un meta refresh immediato viene in genere interpretato come permanente, ma è più lento, meno affidabile e peggiore per l'accessibilità. Va usato solo se non c'è alcun modo di configurare il server, per esempio su certi hosting statici molto limitati.

Redirect JavaScript

Impostare window.location funziona solo dopo che la pagina è stata scaricata e lo script eseguito. Il motore lo vede solo in fase di rendering, quindi con ritardo e senza garanzie. È l'ultima risorsa, non una scelta.

Dove configurare i redirect

L'ordine di preferenza, dal più efficiente al meno efficiente, è di solito questo:

  1. CDN o bilanciatore: la risposta parte prima di raggiungere il server applicativo;
  2. server web (configurazione di Apache, Nginx o equivalenti);
  3. applicazione o CMS, con tabelle di redirect gestite dal pannello.

Un esempio in Nginx per un redirect permanente singolo:

location = /vecchia-pagina/ {
    return 301 /nuova-pagina/;
}

Per grandi quantità di regole conviene usare mappe chiave-valore invece di centinaia di blocchi separati: sono più leggibili e più veloci da valutare.

Quanto tempo mantenerli

Un redirect permanente andrebbe mantenuto a lungo. Per gli spostamenti di sito Google suggerisce di conservarli almeno un anno, ma nella pratica conviene tenerli indefinitamente se il costo è basso: link esterni, segnalibri ed email vecchie continueranno a puntare agli indirizzi originali per anni. Rimuoverli troppo presto trasforma traffico utile in errori 404.

Come verificarli

  • Richiedi l'URL vecchio e controlla codice di stato e header Location.
  • Verifica che la destinazione risponda 200 e non sia a sua volta un redirect.
  • Assicurati che i link interni puntino direttamente alla destinazione.
  • Togli dalla sitemap gli URL che reindirizzano.

In sintesi

  • 301 e 308 sono permanenti, 302 e 307 temporanei.
  • 307 e 308 conservano il metodo della richiesta, utile per le applicazioni.
  • Usa il codice che descrive la realtà: definitivo o provvisorio.
  • Evita meta refresh e redirect JavaScript se puoi configurare il server.
  • Mantieni a lungo i redirect permanenti e aggiorna i link interni.
MM
Marco Marzaduri

Marco Marzaduri si occupa di cybersecurity, informatica forense e sviluppo web. Laureato in informatica, unisce il rigore dell'analisi tecnica all'attenzione per le persone che usano la tecnologia.

Leggi anche