301 vs. 308: redirect permanenti

301 e 308 sono entrambi redirect permanenti: la differenza principale è che 308 garantisce che il metodo HTTP (e il corpo che lo accompagna) sopravviva al passaggio. Perché esiste 308, perché Google e Bing lo elaborano come 301 e quando conviene usarlo.

Prima pubblicazione: 2 lug 2026 · Ultimo aggiornamento: 8 ago 2026 · Advanced
Lingue
1 segnale di evidenza in questa pagina

Un 301 e un 308 sono entrambi redirect permanenti, e Google e Bing trattano 308 allo stesso modo di 301 per scansione, indicizzazione e segnali: la documentazione di Google definisce 308 «equivalente a 301», Gary Illyes dice «lo fondiamo semplicemente con 301» e Fabrice Canel di Bing conferma che Bing li tratta allo stesso modo. A livello di protocollo, la differenza principale è meccanica: 308 garantisce che il client ripeta lo stesso metodo della richiesta (un POST resta un POST e il corpo viaggia con essa) verso il nuovo URL, mentre 301, codice dell'epoca HTTP/1.0, è ambiguo soprattutto sul passaggio da POST a GET (la RFC non tratta PUT/DELETE in un senso o nell'altro). Per una normale migrazione da pagina a pagina o di sito, quindi, 301 resta il default pragmatico (più vecchio, riconosciuto più ampiamente e meglio supportato da strumenti, CDN e plugin). Scegli 308 solo quando devi preservare un metodo diverso da GET: endpoint API, URL webhook, destinazioni di invio dei moduli, flussi POST di autenticazione; anche in quel caso, il codice di stato da solo non garantisce credenziali, cookie o idempotenza, quindi prova il client reale. Nessuno dei due offre un vantaggio SEO: chi suggerisce di migrare in massa i 301 a 308 per migliorare il ranking vende un mito già smentito esplicitamente dai motori di ricerca.

TL;DR — 301 e 308 sono entrambi redirect permanenti, e Google e Bing elaborano 308 nello stesso modo di 301: la documentazione di Google dice che 308 è “equivalent to 301,” (traduzione) «equivalente a 301,» Illyes dice “we just merge that with 301,” (traduzione) «lo fondiamo semplicemente con 301,» e Canel conferma che Bing li tratta allo stesso modo. A livello di protocollo, la differenza principale è la preservazione del metodo: 308 (RFC 7538, 2015) garantisce meccanicamente che il client ripeta lo stesso metodo sul nuovo URL (il corpo viaggia con la richiesta); 301 risale all’epoca HTTP/1.0 ed è ambiguo soprattutto sul POST che diventa GET — la RFC non tratta PUT o DELETE in un senso o nell’altro, quindi non generalizzare la cautela sul POST. 308 esiste come fratello permanente di 307: RFC 7231 definiva un codice temporaneo che preservava il metodo (307), ma non uno permanente, e 308 ha colmato il vuoto. Usa 301 come default per le normali migrazioni di pagina, sito o HTTPS (è più vecchio, riconosciuto più ampiamente e meglio supportato da CDN, CMS e plugin). Scegli 308 solo quando devi preservare una richiesta diversa da GET — endpoint API, URL webhook, destinazioni di invio dei moduli, flussi POST di autenticazione — e anche in quel caso verifica credenziali, cookie e idempotenza sul client reale invece di presumere che il codice di stato li copra. Nessuno dei due è «migliore per la SEO»: è un mito già smentito esplicitamente dai motori.

Prima viene la differenza semantica

Sia 301 sia 308 comunicano ai motori di ricerca la stessa cosa sulla permanenza: la risorsa è stata spostata definitivamente e la destinazione dovrebbe diventare canonica. La differenza sta in una sola garanzia meccanica, circoscritta al modo in cui il client ripete la richiesta.

  • 301 (Moved Permanently) è il codice di redirect permanente originale, risalente all’epoca HTTP/1.0. Soprattutto, è sempre stato ambiguo sull’obbligo di preservare il metodo della richiesta. Nella pratica, browser e altri client hanno storicamente convertito un POST in un GET quando seguivano un 301: va bene per una pagina semplice, ma rompe silenziosamente qualsiasi cosa dipenda dal metodo o dal corpo della richiesta.
  • 308 (Permanent Redirect) è la versione rigorosa. Garantisce che il client ripeta lo stesso metodo e lo stesso corpo sul nuovo URL. Un POST resta un POST; il payload viaggia con la richiesta.

La formula in una frase che userei: un 308 è un 301 che garantisce anche che il browser non trasformi silenziosamente il POST in GET. Evidence for this claim RFC 9110 defines both 301 and 308 as permanent redirects; 308 forbids changing the request method, while 301 permits POST-to-GET rewriting for historical reasons. Scope: HTTP semantics for 301 and 308 responses. Confidence: high · Verified: IETF: RFC 9110 §§15.4.2, 15.4.9 IETF: RFC 7538 §3 — 308 Permanent Redirect

Perché esiste 308: il «307 permanente» che mancava

È la parte che quasi nessuno spiega, ma è il modo più chiaro per capire il confronto. Si tratta di una lacuna nella specifica.

I moderni codici di redirect formano una griglia temporaneo/permanente e permissivo/rigoroso:

TemporaryPermanent
Method may change (loose)302301
Method preserved (strict)307308

RFC 7231 ha definito 307, un redirect temporaneo che preserva il metodo, come controparte rigorosa del 302 permissivo e ambiguo. Non ha però definito un equivalente permanente che preservasse il metodo. Esisteva un codice temporaneo rigoroso, ma nessun codice permanente rigoroso. RFC 7538 (aprile 2015) ha aggiunto 308 proprio per colmare quella lacuna: sta a 301 come 307 sta a 302. Se hai letto il confronto 302-vs-307 di questo cluster, 301-vs-308 è la stessa relazione, una riga più in alto: permanente-permissivo contro permanente-rigoroso.

301 precede tutta questa griglia. Proviene da HTTP/1.0, prima che il concetto di «preservare il metodo» fosse formalizzato: è esattamente per questo che è ambiguo e che 308 ha dovuto essere inventato invece di limitarsi a chiarire 301.

Cosa significa in pratica «preservare metodo e corpo»

Per la stragrande maggioranza dei redirect — qualcuno fa clic su un link, il browser invia un GET e il server lo manda altrove — non c’è una differenza concreta. I browser moderni preservano senza problemi GET con 301. La distinzione conta solo quando la richiesta non è un GET semplice:

Tipo di richiestaCon 301Con 308
GET (una pagina normale)Seguito come GET (in pratica, senza problemi)Seguito come GET
POST (invio modulo, API)Può essere convertito silenziosamente in GET, corpo persoRipetuto come POST, corpo intatto
PUT / DELETE (API)Non documentato dalla RFC — l’eccezione storica riguarda solo POST→GET, quindi consideralo dipendente dal client e non verificatoMetodo preservato (la regola di follow automatico di 308 non è specifica per POST)

Il rischio di 301 riguarda quindi soprattutto POST e i corpi delle richieste: moduli, API, webhook e flussi di autenticazione. «Un 301 romperà sempre il mio modulo» è un’esagerazione; un GET semplice è sicuro. La deroga storica della specifica per 301 riguarda precisamente POST→GET; non documenta il comportamento di PUT o DELETE, quindi non dare per scontato come i due codici gestiscano questi metodi senza provare il client reale. La specifica è chiara su un punto: 308 vieta al client di cambiare il metodo che ripete; la regola non è limitata a POST. Qui è garantita la preservazione del metodo, non che header, cookie, credenziali o l’intera transazione sopravvivano senza modifiche: questo dipende da client e integrazione, e va testato per tutto ciò che conta (vedi la checklist sotto).

Google tratta 301 e 308 in modo diverso per la SEO? No.

È la rara domanda sui redirect su cui documentazione, Googler e Bing concordano, e lo fanno coerentemente da anni.

La documentazione di Google sui codici di stato HTTP mette 301 e 308 nella stessa categoria. La riga di 301 dice: “Google follows the redirect, and Google systems use the redirect as a strong signal that the redirect target should be processed.” (traduzione) «Google segue il redirect e i sistemi di Google lo usano come un segnale forte che indica che la destinazione del redirect dovrebbe essere elaborata.» La riga di 308 è una sola: “Equivalent to 301.” (traduzione) «Equivalente a 301.» È l’affermazione più forte e citabile: la documentazione di Google equipara letteralmente i due codici. Evidence for this claim Google treats 308 as equivalent to 301 for Search while advising sites to use the semantically appropriate status code. Scope: Google Search processing; client behavior still differs when method preservation matters. Confidence: high · Verified: Google: HTTP status codes and Search

La guida sui redirect lo ribadisce, aprendosi con “The 301 and 308 status codes mean that a page has permanently moved to a new location” (traduzione) «I codici di stato 301 e 308 indicano che una pagina è stata spostata permanentemente in una nuova posizione» e non tracciando poi alcuna distinzione tra loro.

I Googler lo avevano già detto informalmente per anni, molto prima che venisse scritto nella documentazione:

  • Gary Illyes (2021): in una discussione su come Google tratta 308 rispetto a 301, disse che Google “just merge[s] that with 301 so we really don’t care.” (traduzione) «lo fonde semplicemente con 301, quindi non ci importa davvero.» Il resoconto di Barry Schwartz lo presentò come il momento in cui la posizione divenne ufficiale: “Three years later it was added to the official Google documents that Google treats 308 redirects like 301 redirects — so now it is official.” (traduzione) «Tre anni dopo è stato aggiunto ai documenti ufficiali di Google che Google tratta i redirect 308 come i redirect 301: ora è ufficiale.»
  • John Mueller (2018): tre anni prima — “If you use it [a 308 redirect] like a 301 we’ll treat it as such.” (traduzione) «Se lo usi [un redirect 308] come un 301, lo tratteremo come tale.» Questa è quindi la posizione informale di Google da molto prima che la documentazione la registrasse.

C’è però una sfumatura importante nella documentazione di Google, ed è la tesi dell’intero articolo. Subito dopo aver equiparato i codici, Google aggiunge: “While Google treats these status codes the same way, keep in mind that they’re semantically different. Use the status code that’s appropriate for the redirect so other clients (for example, e-readers, other search engines) may benefit from it.” (traduzione) «Google tratta questi codici allo stesso modo, ma ricorda che sono semanticamente diversi. Usa il codice appropriato per il redirect, così anche gli altri client (per esempio lettori elettronici e altri motori di ricerca) possono trarne vantaggio.» In altre parole: scegli il codice per correttezza e interoperabilità, non per la SEO, perché alla SEO non importa.

Bing tratta 301 e 308 in modo diverso? Neanche.

La maggior parte degli articoli su questo argomento parla solo di Google, lasciando una lacuna. Fabrice Canel di Bing ha risposto direttamente nel settembre 2024 a chi chiedeva se Bing trattasse un 308 permanente come un 301: “Bing treats 308 redirects the same as 301 redirects.” (traduzione) «Bing tratta i redirect 308 allo stesso modo dei redirect 301.» Schwartz ha notato che coincideva con quanto Google aveva detto nel 2021.

Quindi entrambi i principali motori lo hanno dichiarato: 308 è funzionalmente identico a 301 per scansione, indicizzazione e consolidamento dei segnali. Nessun motore considera 308 superiore per la SEO.

Il mito da sfatare: «308 è migliore per la SEO / migra tutti i 301»

Voglio essere diretto, perché pagine di qualità inferiore continuano a insinuarlo. Non c’è alcun vantaggio SEO nello scegliere 308 invece di 301 per un redirect tipico, né c’è motivo di migrare in massa i 301 esistenti a 308. Non è una mia opinione: è la posizione dichiarata dei motori di ricerca:

  • La documentazione di Google dice che 308 è “equivalent to 301.” (traduzione) «equivalente a 301
  • Illyes: “we just merge that with 301.” (traduzione) «lo fondiamo semplicemente con 301.»
  • Canel: Bing “treats 308 redirects the same as 301 redirects.” (traduzione) «tratta i redirect 308 allo stesso modo dei redirect 301.»

Sostituire in massa 301 con 308 non offre alcun vantaggio di ranking e introduce rischi con strumenti legacy o edge che riconoscono correttamente solo 301/302 (ne parliamo più avanti). È puro cambiamento senza beneficio.

Vale la pena distinguere questo mito da uno davvero contestato: la vecchia affermazione secondo cui «i 301 perdono o diluiscono il PageRank». Riappare ancora e Google l’ha smentita più volte. Ma la differenza è importante: sul mito della diluizione del PageRank Google sta correggendo un’idea sbagliata; sull’equivalenza 301-vs-308 Google, Bing e la documentazione affermano tutti la stessa cosa con coerenza dal 2018. È una questione risolta, non controversa. (La storia completa del PageRank si trova nel confronto 301-vs-302 di questo cluster.)

Quando 308 è la scelta tecnicamente corretta

Scegli 308 quando perdere il metodo o il corpo della richiesta romperebbe la funzionalità, non il ranking:

  • Endpoint API che stai spostando e sui quali i client inviano POST/PUT/DELETE.
  • URL webhook: il mittente invia un payload POST che non puoi permetterti di perdere.
  • Destinazioni action dei moduli: i dati inviati dal <form> devono arrivare intatti al nuovo URL.
  • Flussi POST di autenticazione o accesso in cui credenziali o token viaggiano nel corpo.

Per POST in particolare, 301 rischia di convertire la richiesta in un GET e lasciare il corpo senza destinazione; 308 vieta la conversione. Per PUT/DELETE la RFC non descrive il comportamento di 301 in un senso o nell’altro, quindi non fare supposizioni: la regola di 308 che preserva il metodo vale qualunque sia il metodo.

Prima di trasferire un’API, un webhook o un flusso di autenticazione, ricorda che il codice di stato da solo non garantisce che tutto sopravviva al passaggio: conviene controllare questi punti come parte dello stesso cambiamento:

  • Credenziali, cookie e header di autenticazione. Nessuno dei due codici offre garanzie qui; prova il client effettivo (browser, SDK o mittente del webhook) invece di presumere che tutto venga trasmesso.
  • Comportamento cross-origin. Un redirect che attraversa origini può cambiare ciò che un browser o un client fetch invia: verifica con il chiamante reale, non solo con un curl manuale.
  • Idempotenza ed effetti collaterali duplicati. Se la richiesta ripetuta non è idempotente (un webhook che crea un record o un POST di pagamento), un client che riprova dopo un redirect può eseguire l’operazione due volte. Prima di affidarti a 308, verifica che la destinazione gestisca in sicurezza una ripetizione.
  • Fai prove progressive e prevedi il rollback tenendo conto della cache. Le risposte 301 e 308 sono memorizzabili euristicamente, quindi un client o intermediario che ha già memorizzato la vecchia risposta può continuare a usarla dopo il cambio del codice: prova con un client nuovo e con uno che aveva visitato l’URL prima della modifica, e prepara un rollback che consideri lo stato in cache invece di presumere che il cambio sia istantaneo.

Quando 301 resta il default pragmatico

Per tutto ciò che è un GET semplice — cioè la maggior parte dei redirect effettuati dai professionisti SEO — 301 resta il default sensato:

  • Normali cambi di pagina/URL e spostamenti di contenuti.
  • Cambi di dominio e fusioni di siti.
  • Migrazioni da HTTP a HTTPS.
  • Consolidamento delle varianti www/non-www o con/senza slash finale.

Perché usare il codice più vecchio se 308 è «più rigoroso»? Per tre ragioni pratiche:

  1. Riconoscimento più ampio. 301 precede 308 di due decenni ed è riconosciuto dalla grande maggioranza di browser, proxy, CDN, crawler e strumenti di analisi, sia nell’uso attuale sia in quello legacy. Oggi 308 ha più di dieci anni ed è ampiamente supportato, ma la coda lunga di client legacy e strumenti edge è meno certa: non presumere che ogni strumento del tuo stack lo riconosca senza verifica.
  2. Realtà degli strumenti. Molti strumenti comuni usano 301/302 come default o li espongono in modo affidabile soltanto. I plugin di redirect per WordPress, i builder di regole di Cloudflare e alcune piattaforme serverless/CDN si basano su 301/302; alcuni emetteranno 302/307 indipendentemente da ciò che pensi di aver configurato. Per chi gestisce un sito senza competenze tecniche, «che cosa supporta davvero la mia piattaforma» è spesso il fattore decisivo.
  3. Non c’è nulla da guadagnare. Poiché Google e Bing elaborano i due codici allo stesso modo per scansione e indicizzazione, non c’è alcun vantaggio nello scegliere il codice meno supportato per un normale spostamento di pagina.

La regola pratica: GET semplice → 301; richiesta non-GET da preservare → 308.

Come implementare ciascun codice

La sintassi è quasi identica: cambia solo il numero.

Apache (.htaccess)

# 301 — permanent, for a normal page move
Redirect 301 /old-page /new-page

# 308 — permanent + method-preserving, for an API/form endpoint
RewriteEngine On
RewriteRule ^old-api/(.*)$ /new-api/$1 [R=308,L]

nginx

# 301
location = /old-page {
    return 301 /new-page;
}

# 308 — preserves POST body to the API
location = /old-api {
    return 308 /new-api;
}

Una cautela vale per entrambi: alcuni CDN, piattaforme edge e plugin CMS non rispettano un 308 configurato da te e ne emettono invece uno 301/302/307. Se la preservazione del metodo è davvero importante, verifica la risposta che stai inviando realmente (esegui curl sull’URL e leggi la riga di stato) invece di fidarti della configurazione. Anche la sintassi delle direttive cambia tra versioni dei server e framework: consulta la documentazione della versione Apache/nginx in uso (o del framework, se genera il redirect) invece di presumere che gli snippet siano aggiornati in modo identico per il tuo ambiente.

Una leva più importante della scelta 301-vs-308: la lunghezza della catena

Qualunque codice tu scelga, il vero fattore di performance è mantenere brevi i redirect. Google segue fino a circa 10 passaggi di redirect prima di arrendersi, e ogni passaggio aggiuntivo significa latenza e una possibilità che i segnali si disperdano. Un singolo passaggio pulito con il codice giusto è migliore di una catena di codici «tecnicamente corretti». Reindirizza direttamente alla destinazione finale.

Dove si colloca questo confronto

301 e 308 sono i due codici di redirect permanenti e ciascuno ha il proprio approfondimento in questo cluster, accanto alle controparti temporanee (302 e il suo fratello rigoroso 307) e all’altro membro della famiglia 3xx, 303. I confronti formano una griglia: 301-vs-302 riguarda permanente contro temporaneo, 302-vs-307 è la coppia temporanea permissiva contro rigorosa, e questo confronto, 301-vs-308, è la coppia permanente permissiva contro rigorosa. Fai attenzione anche ai rischi operativi: catene e loop di redirect. Per l’intera famiglia delle risposte del server, consulta l’hub dei codici di stato HTTP; il tipo di redirect è anche uno dei segnali di canonicalizzazione trattati nella canonicalizzazione.

Try it live

These are real endpoints on this site — not a simulation. Hit them from the button, open them in a new tab, or curl -i them from your terminal, and the server answers with the actual status code this article is about.

Open in new tab ↗
Open in new tab ↗

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.