Cosa è un codice di stato 301, 302, … 307

Cos’è un Redirect HTTP?

Un redirect HTTP è uno strumento fondamentale per gestire correttamente il traffico web, evitare errori 404, e soprattutto mantenere il valore SEO costruito nel tempo. Usare il codice giusto nel momento giusto è cruciale per la salute tecnica di un sito web.

Un redirect (reindirizzamento) HTTP è un meccanismo usato per indicare al browser o a un motore di ricerca che una risorsa è stata spostata a un altro URL. In altre parole, quando un utente o un bot visita una determinata URL, il server risponde dicendo:

“Questa pagina si trova ora altrove, vai lì.”

Perché si usa un redirect?

  • Cambiare la struttura degli URL di un sito
  • Passare da http:// a https://
  • Unificare www e non-www
  • Migrare a un nuovo dominio
  • Evitare contenuti duplicati
  • Ottimizzazione SEO

Come funziona tecnicamente

  1. L’utente o il bot richiede una pagina (GET /vecchia-pagina)
  2. Il server risponde con:
    • Un codice di stato HTTP (301, 302, etc.)
    • Un header Location con la nuova URL
HTTP/1.1 301 Moved Permanently
Location: https://www.nuovosito.com/nuova-pagina
  1. Il browser (o bot) segue automaticamente la nuova URL

Tipi di redirect principali

301 — Moved Permanently

  • Significato: La risorsa è stata spostata in modo permanente
  • SEO: Trasferisce quasi tutta la link equity (PageRank) al nuovo URL
  • Uso consigliato: Quando l’URL cambia per sempre
  • Esempi:
    • Da http a https
    • Migrazione di dominio
    • URL obsoleti

302 — Found (Temporary Redirect)

  • Significato: Spostamento temporaneo
  • SEO: I motori di ricerca non trasferiscono il PageRank (o lo fanno in modo parziale)
  • Uso consigliato: Quando tornerai a usare l’URL originale
  • Esempi:
    • Test A/B
    • Promozioni temporanee
    • Pagina in manutenzione

303 — See Other

  • Significato: Usa il metodo GET per recuperare una nuova risorsa
  • Uso consigliato: Dopo una form submission con metodo POST, per evitare il reinvio
  • Esempi:
    • Dopo l’invio di un modulo, reindirizzare a una pagina di conferma

307 — Temporary Redirect

  • Significato: Simile al 302, ma mantiene il metodo HTTP originale (POST, PUT, etc.)
  • Uso consigliato: Come il 302, ma più preciso per API REST o richieste POST

308 — Permanent Redirect

  • Significato: Come il 301, ma mantiene il metodo HTTP originale
  • Uso consigliato: Come il 301, in contesti dove il metodo POST non deve diventare GET

Implementazione di un redirect

1. In Apache (.htaccess)

Redirect 301 /vecchia-pagina https://www.miosito.com/nuova-pagina

2. In Nginx

rewrite ^/vecchia-pagina$ https://www.miosito.com/nuova-pagina permanent;

3. In PHP

header("HTTP/1.1 301 Moved Permanently");
header("Location: https://www.miosito.com/nuova-pagina");
exit();

Errori comuni da evitare

  • Usare un 302 invece di un 301 per un cambio permanente
  • Creare loop di redirect (A → B → A)
  • Non aggiornare i link interni
  • Non aggiornare la sitemap
  • Non usare HTTPS nei nuovi URL

✅ Best Practice SEO

  • Preferire il 301 per migrazioni permanenti
  • Mantenere i redirect attivi almeno per 1 anno (orientativamente)
  • Evitare catene di redirect (A → B → C → D)
  • Monitorare con strumenti come Google Search Console

Verifica dei redirect

  • curl da terminale:
curl -I https://www.tuosito.com/vecchia-pagina
  • Risultato atteso:
HTTP/1.1 301 Moved Permanently
Location: https://www.tuosito.com/nuova-pagina