301 vs 302 vs 307 vs 308: i codici di stato dei reindirizzamenti spiegati
Cosa significa davvero ogni codice di stato di reindirizzamento HTTP, come differiscono reindirizzamenti permanenti e temporanei per SEO e caching, e come vedere esattamente quale codice restituisce ogni passaggio di un link.
Cosa dice davvero un codice di stato di reindirizzamento
Ogni reindirizzamento è una risposta HTTP con un codice di stato nella fascia 3xx e un header Location che punta all'URL successivo. Il codice non è un tecnicismo — dice a browser, crawler e cache come trattare lo spostamento: se è permanente, se può essere memorizzato in cache e se il metodo e il corpo della richiesta originale devono essere preservati nel passaggio successivo.
Un singolo link può concatenare diversi di questi codici. Un URL breve potrebbe rispondere con un 301, il dominio di tracciamento dietro di esso con un 302 e il sito finale con un 307 prima di arrivare a un 200. Leggere quei codici è il modo più veloce per capire cosa sta davvero facendo un link.
I quattro codici che incontrerai davvero
301 — Moved Permanently
La risorsa ha un nuovo URL definitivo. I browser possono memorizzare un 301 in cache in modo aggressivo — spesso per l'intera sessione o più — e i motori di ricerca lo trattano come un segnale di canonicalizzazione: indicizzazione e segnali di ranking si spostano sull'URL di destinazione. Usalo per migrazioni, cambi di dominio e qualsiasi URL che non intendi riportare in vita.
302 — Found (temporaneo)
La risorsa è altrove per ora. Le cache sono prudenti con i 302 e i motori di ricerca mantengono indicizzato l'URL originale anziché la destinazione. Storicamente, il 302 aveva una stranezza: molti client riscrivono le richieste POST in GET nel passaggio successivo. È esattamente per questa ambiguità che esistono 307 e 308.
307 — Temporary Redirect
Come un 302, ma rigoroso: metodo e corpo devono essere ripetuti invariati nel passaggio successivo. Un POST resta un POST. Vedrai spesso i 307 dagli upgrade HSTS (un 307 interno quando un sito forza HTTPS) e dalle API che reindirizzano temporaneamente le scritture.
308 — Permanent Redirect
Il gemello permanente del 307: memorizzabile in cache come un 301, ma con la garanzia che metodo e corpo siano preservati. Le API che spostano endpoint in modo permanente preferiscono il 308 perché i client non possono trasformare silenziosamente un POST in un GET.
| Codice | Nome | Permanente | Metodo preservato | Uso tipico |
|---|---|---|---|---|
301 | Moved Permanently | Sì | Il POST può diventare GET | Migrazioni di siti, URL canonici |
302 | Found | No | Il POST può diventare GET | Link brevi, test A/B, geo-routing |
307 | Temporary Redirect | No | Sì, garantito | Upgrade HSTS, routing API temporaneo |
308 | Permanent Redirect | Sì | Sì, garantito | Spostamenti permanenti di endpoint API |
Quale codice dovresti usare?
Lo decidono due domande: lo spostamento è permanente e il metodo della richiesta deve sopravvivere al passaggio? Per le normali pagine web (richieste GET), la questione del metodo conta raramente — è la distinzione permanente/temporaneo quella che conta.
Perché la scelta conta per la SEO
I motori di ricerca trattano i reindirizzamenti permanenti e temporanei in modo diverso. Un 301 (o 308) dice al crawler che il vecchio URL è ritirato: i segnali di ranking si consolidano sulla destinazione e col tempo la destinazione sostituisce la sorgente nell'indice. Un 302 (o 307) dice «continua a indicizzare l'originale» — utile per link brevi ed esperimenti, dannoso se in realtà ti sei spostato per sempre.
Modi comuni in cui i reindirizzamenti danneggiano silenziosamente un sito:
- Un 302 dove serve un 301: una migrazione permanente servita come temporanea divide i segnali tra due URL invece di consolidarli.
- Catene di reindirizzamenti: tre, quattro, cinque passaggi di fila rallentano ogni visita e sprecano crawl budget. Se le concateni abbastanza spesso, i crawler si arrendono prima della destinazione.
- Loop di reindirizzamenti: A → B → A non serve nulla. I browser interrompono dopo un numero fisso di passaggi.
- Segnali misti: un 301 che punta a un URL che a sua volta fa 302 altrove lascia i crawler a indovinare quale URL sia canonico.
Anatomia di una risposta di reindirizzamento
Una risposta di reindirizzamento è breve — la riga di stato, un header Location e di solito qualche indicazione di caching. Ecco un reindirizzamento permanente che i browser possono ricordare per un anno:
HTTP/2 301 Moved Permanently
location: https://new.example.com/page
cache-control: max-age=31536000
Non tutti i reindirizzamenti sono risposte HTTP. I tag meta refresh e i reindirizzamenti JavaScript (window.location) avvengono nella pagina stessa, dopo il caricamento dell'HTML. Sono più lenti, più deboli per la SEO e i preferiti dei kit di phishing — il primo passaggio sembra innocuo agli scanner semplici mentre lo script ti manda altrove.
Vedi ogni codice della catena
Non devi indovinare quale codice restituisce un link. Redirect Radar traccia l'intera catena in un pannello laterale: ogni passaggio con il suo codice di stato esatto, metodo, tempi e header di risposta — inclusi i reindirizzamenti JavaScript che non appaiono mai in un semplice controllo HTTP. Catene lunghe e loop saltano subito all'occhio, e il passaggio finale riceve un grado di sicurezza.
Provalo sul prossimo link breve che ricevi, o sul tuo sito dopo una migrazione: il primo passaggio dovrebbe essere un unico 301 pulito verso l'URL canonico, non una scalinata di 302.
I link brevi di T.LY usano reindirizzamenti puliti e intenzionali. Crea un link breve, poi traccialo con Redirect Radar per vedere il codice di stato esatto, gli header e la destinazione che il tuo pubblico raggiungerà. Inizia con T.LY → e ottieni il 20% di sconto sul primo mese o su un piano annuale con il codice
Conclusione
I quattro codici di reindirizzamento sono un piccolo vocabolario con conseguenze reali: 301 e 308 ritirano un URL e ne spostano i segnali di ranking; 302 e 307 mantengono vivo l'originale; 307 e 308 garantiscono che il metodo della richiesta sopravviva al passaggio. Scegli consapevolmente, mantieni le catene corte e verifica il risultato con un tracer invece di dare per scontato che la configurazione abbia fatto ciò che intendevi.