Redirect permanente 308

Cos'è un redirect permanente 308, come preserva il metodo HTTP segnalando la permanenza a differenza di un 301 e come Google trasferisce i segnali di ranking attraverso di esso.

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

Un redirect permanente 308 è uno spostamento definitivo, come un 301, con una garanzia rigorosa in più: il client non deve cambiare il metodo della richiesta sul nuovo URL e, poiché un client conforme ripete la stessa richiesta invece di crearne una nuova, anche il corpo viaggia con essa, quindi un POST resta un POST. Per la SEO è equivalente a un 301: la documentazione di Google lo definisce «Equivalent to 301», Gary Illyes dice che Google lo fonde con 301 e Fabrice Canel di Bing conferma che Bing li tratta allo stesso modo. Non c'è quindi un motivo di ranking per preferire l'uno all'altro. Scegli 308 quando devi reindirizzare una richiesta diversa da GET che deve arrivare intatta, come un endpoint API, un webhook, un modulo o un POST di autenticazione, perché un 301 può, «per ragioni storiche», trasformare silenziosamente quel POST in GET e perdere il corpo. Per uno spostamento normale di pagina, il passaggio da http a https o un cambio di dominio, tutti casi di GET, 301 resta il default pragmatico grazie al supporto più ampio di strumenti, CDN e plugin. Nel 2026 il supporto dei browser è alto, circa 96,5% o più secondo caniuse, ma conviene controllare il proprio stack: alcuni plugin CMS, pannelli di regole edge e proxy legacy espongono ancora solo 301/302/307.

TL;DR — Un 308 è il redirect permanente che preserva rigorosamente il metodo: lo stesso segnale di canonicalizzazione di un 301 (la documentazione di Google dice “Equivalent to 301), ma garantisce che il client non cambi il metodo sul nuovo URL. Poiché un client conforme ripete la stessa richiesta invece di crearne una nuova, anche il corpo viaggia con essa. Esiste perché HTTP ha avuto per anni un codice temporaneo che preservava il metodo (307) prima di averne uno permanente: RFC 7538 (2015) ha colmato il vuoto e RFC 9110 ora rimanda direttamente a 308 dalla propria definizione di 301. Per la SEO i due sono intercambiabili (Illyes: Google «fonde» 308 con 301; Canel di Bing conferma la parità). Scegli 308 quando deve sopravvivere una richiesta diversa da GET, come una migrazione API/versione, un URL webhook o un POST di autenticazione/modulo, ma verifica la preservazione di metodo e corpo con il tuo client invece di darla per scontata dalla specifica. Altrimenti 301 resta il default: nel 2026 il supporto browser di 308 è forte, circa 96,5% o più secondo caniuse, ma RFC 9110 lo considera ancora giovane e non universalmente riconosciuto, e alcuni plugin CMS, pannelli edge e proxy legacy espongono solo 301/302/307.

Cosa significa 308, a livello meccanico

Un redirect permanente 308 porta lo stesso messaggio di un 301, questa risorsa ora si trova permanentemente a un nuovo URL, con un’aggiunta che il 301 non ha mai garantito: il client non deve cambiare il metodo della richiesta sulla destinazione. Poiché il client ripete la stessa richiesta invece di emetterne una nuova, il corpo viaggia con essa per un client conforme alla specifica. È una conseguenza della garanzia sul metodo, non una promessa certificata separatamente, quindi verificala end-to-end con il tuo client e server invece di darla per scontata. MDN descrive 308 come il codice che mantiene invariati metodo e, in pratica, corpo della richiesta durante il redirect, mentre 301 potrebbe non farlo.

La versione in linguaggio semplice che uso nella guida sui redirect di Ahrefs è: “A 308 redirect is the same as a 301 redirect, except it retains the HTTP method of the original request, GET or POST, when performing the redirect.” (traduzione) «Un redirect 308 è uguale a un redirect 301, salvo che conserva il metodo HTTP della richiesta originale, GET o POST, durante il redirect.» Oppure, ancora più breve, nella guida sui codici di stato HTTP: “308 Permanent Redirect – Has the same functionality as a 301 redirect, except you can’t switch between POST and GET.” (traduzione) «Redirect permanente 308: ha la stessa funzionalità di un redirect 301, salvo che non puoi passare da POST a GET.» Evidence for this claim RFC 7538 defines 308 Permanent Redirect as a permanent move whose redirect follow-up must not change the request method. Scope: HTTP semantics for 308 responses. Confidence: high · Verified: IETF: RFC 7538 §3 — 308 Permanent Redirect

Ecco la differenza in concreto. Supponiamo che un client invii con POST un ordine a /api/orders con un corpo JSON:

POST /api/orders HTTP/1.1
Host: shop.example.com
Content-Type: application/json

{ "sku": "A-100", "qty": 2 }

Se l’endpoint risponde con 301 e il client applica la vecchia concessione «puoi passare a GET», la richiesta può arrivare al nuovo URL come GET vuoto: il corpo è sparito e l’ordine è perso. Con 308 il client deve ripetere il POST sul nuovo URL; un client conforme porta con sé il corpo, quindi l’ordine va a buon fine. Confermalo nei log del tuo client e server (vedi la scheda Scripts) invece di presumere che valga universalmente. Questa è l’intera distinzione pratica: emerge solo quando la richiesta originale non era un semplice GET.

Perché esiste 308: la storia della specifica

È la parte che la maggioranza delle spiegazioni salta, ma è il modo più chiaro per capire il codice.

Prima venne 307. HTTP aveva già un redirect temporaneo che preservava il metodo, 307, molto prima di avere un equivalente permanente. La specifica centrale originale (RFC 7231) non definiva un corrispettivo permanente di 307. Esistevano quindi un codice temporaneo «mantieni il metodo» e un codice permanente «puoi cambiare il metodo» (301), ma nessun codice permanente «mantieni il metodo».

RFC 7538 colmò il vuoto. 308 fu aggiunto appositamente per essere il 307 permanente mancante: prima come RFC 7238 sperimentale (giugno 2014), poi standardizzato come RFC 7538 (aprile 2015). È un tappo per un vuoto reale, non un sostituto di 301.

La specifica attuale lo indica direttamente. La RFC 9110, la specifica odierna sulla semantica HTTP, documenta ancora l’ambiguità incorporata nel 301 e poi nomina 308 come soluzione nella definizione stessa di 301: un user agent “MAY change the request method from POST to GET for the subsequent request… If this behavior is undesired, the 308 (Permanent Redirect) status code can be used instead.” (traduzione) «PUÒ cambiare il metodo della richiesta da POST a GET per la richiesta successiva… Se questo comportamento è indesiderato, si può usare invece il codice di stato 308 (redirect permanente).» Quella frase è l’intero motivo per cui esiste 308, direttamente dalla specifica autorevole. Nella sezione dedicata a 308, RFC 9110 aggiunge un’unica cautela onesta: il codice “is much younger (June 2014) than its sibling codes and thus might not be recognized everywhere.” (traduzione) «è molto più giovane (giugno 2014) dei codici fratelli e quindi potrebbe non essere riconosciuto ovunque.»

Quindi il comportamento POST-to-GET di 301 non è un bug: è una concessione documentata «per ragioni storiche» incorporata nella specifica, e 308 è il modo ufficialmente approvato per evitarla.

301 contro 308: la differenza pratica in una tabella

Richiesta GET semplicePOST/PUT/DELETE con corpo
301Si comporta come 308Può essere declassato a GET; il corpo può andare perso
308Si comporta come 301Metodo e corpo vengono ripetuti con garanzia
SEO signalUguale (permanente, consolida)Uguale (permanente, consolida)

La conclusione è questa: per la stragrande maggioranza dei redirect, che sono semplici GET, 301 e 308 fanno esattamente la stessa cosa. La garanzia serve solo quando è coinvolto un metodo diverso da GET con un corpo. (Per il confronto completo, vedi l’articolo dedicato a 301 contro 308.)

Google tratta 308 come 301 per la SEO?

Sì, senza ambiguità, ed è documentato. La documentazione sui codici di stato HTTP di Google definisce 301 un redirect che Google “use[s]… as a strong signal that the redirect target should be processed,” (traduzione) «usa come segnale forte affinché la destinazione del redirect venga elaborata» e definisce 308 semplicemente “Equivalent to 301.” (traduzione) «equivalente a 301». Aggiunge una cautela sensata: “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) «Anche se Google tratta questi codici allo stesso modo, ricorda che sono semanticamente diversi. Usa il codice appropriato per il redirect, così altri client possono trarne vantaggio.» In parole semplici, Google non ti penalizza per aver scelto quello «sbagliato», ma dovresti comunque usare quello corretto per la richiesta, perché altro software si basa sulla distinzione.

Evidence for this claim Google treats 308 as equivalent to 301 for Search and groups both as permanent redirects. Scope: Google Search processing; the two status codes remain semantically different for HTTP clients. Confidence: high · Verified: Google: HTTP status codes and Search Google: Redirects and Google Search

La guida di Google sui redirect colloca entrambi i codici nello stesso livello raccomandato: “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 significano che una pagina è stata spostata definitivamente in una nuova posizione.» Anche le indicazioni per il cambio di sito nominano esplicitamente 308 invece di trattarlo come un ripensamento di 301: per uno spostamento permanente raccomandano redirect HTTP permanenti «come 301 e 308».

Vale la pena sapere che questa parità non è sempre stata documentata. Gary Illyes ha detto che Google fonde internamente 308 con 301, e la copertura di Search Engine Roundtable descrive il momento in cui è entrato nella documentazione ufficiale come il passaggio da osservazione informale a comportamento su cui fare affidamento. I proprietari che qualche anno fa chiedevano «è davvero documentato?» avevano ragione a essere cauti, anche se il comportamento sottostante non è mai cambiato. Per il testo esatto di Google e dei suoi rappresentanti, la scheda Quotes contiene le citazioni verificate e i link profondi.

Bing tratta 308 come 301?

Sì. Bing non ha una pagina di documentazione dedicata che spieghi 308 come fa Google, ma Fabrice Canel di Microsoft lo ha confermato direttamente su X nel settembre 2024, come riportato da Search Engine Roundtable: Bing tratta i redirect 308 allo stesso modo dei redirect 301. È la dichiarazione autorevole di Bing; per la frase verbatim vedi la scheda Quotes.

Quando usare davvero un 308

È qui che si trova il caso autonomo a favore di 308, e quasi sempre riguarda una richiesta diversa da GET.

Endpoint API e migrazioni di versione. Spostare /v1/ a /v2/ o trasferire un host API è il caso da manuale. I client raggiungono questi endpoint con POST/PUT/PATCH/DELETE e corpi reali. Un 308 garantisce che metodo e payload sopravvivano all’hop; un 301 rischia un declassamento silenzioso che lascia la richiesta bloccata.

Migrazioni di siti con molti POST. Flussi di checkout, endpoint di accesso/autenticazione e destinazioni di azioni dei moduli inviano tutti dati con POST. Se uno di questi URL viene spostato durante una migrazione, 308 mantiene intatto l’invio dove 301 potrebbe non riuscirci.

Cambio degli URL webhook. Quando un altro servizio invia POST a un URL webhook che stai spostando, 308 dice al suo client HTTP di ripetere il POST al nuovo indirizzo con il corpo intatto, esattamente ciò di cui ha bisogno il consumer del webhook.

Il filo comune è questo: usa 308 ovunque perdere il corpo o far scendere silenziosamente il metodo a GET romperebbe la funzionalità, non soltanto sposterebbe un po’ di valore SEO.

Prima di attivare uno di questi casi, testalo come un’integrazione, non limitarti al codice di stato:

  • Ripeti metodo e payload reali contro una copia staging del nuovo endpoint.
  • Conferma se gli header di autorizzazione o i cookie devono essere trasferiti e verifica che lo siano davvero.
  • Se la richiesta originale non è idempotente, per esempio un POST che crea un ordine, controlla gli effetti collaterali duplicati durante l’hop del redirect.
  • Verifica che sopravviva la query string e l’header Content-Type, non solo il corpo.
  • Verifica che il client reale, il mittente webhook, l’SDK API o il browser, segua automaticamente un 308 prima di ritirare il vecchio endpoint. Non tutti i client HTTP lo fanno per default.

Quando 301 resta il default pragmatico

Per tutto ciò che è un semplice GET, 301 resta il default sensato:

  • Cambi ordinari degli URL di contenuti o pagine.
  • Migrazioni da HTTP a HTTPS.
  • Cambi di dominio e migrazioni standard del sito.
  • Normalizzazione della slash finale e di www/non-www.

Qui la richiesta è un semplice GET, quindi la garanzia di 308 non ti offre nulla e 301 vince per universalità. Nessuno dei due ha un costo SEO. Non migrare in massa i 301 esistenti a 308 inseguendo un aumento del ranking: quel vantaggio non esiste. Nella gerarchia delle preferenze per i redirect della guida sui redirect di Ahrefs, 308 e 301 siedono insieme al livello più alto, davanti a meta refresh, JavaScript e altri workaround: sono pari, non gradini di una scala.

Cautele su adozione e supporto: qual è davvero il rischio nel 2026

Il supporto dei browser non è più il rischio pratico di una volta. Secondo il monitoraggio attuale di caniuse, 308 ha circa il 96,5% o più di supporto globale. Controlla la tabella live per il numero odierno, perché cambia: le lacune visibili sono concentrate in browser morti da anni, come quelli precedenti a IE11, versioni antiche di Chrome/Firefox/Safari e il vecchio Android Browser. Se trovi ancora l’avviso «IE11 non funziona con 308», è obsoleto per il traffico mainstream.

La cautela più attuale riguarda gli strumenti. La lacuna onesta del 2026 è che non ogni livello espone un’opzione 308. Alcuni plugin CMS per i redirect, alcuni pannelli CDN/edge e alcuni proxy inversi o bilanciatori di carico più vecchi permettono ancora solo 301/302/307. Prima di impegnarti con 308, verifica che il livello che serve davvero il redirect possa emetterlo invece di declassarlo silenziosamente: la scheda Scripts contiene un comando su una riga per confermare il codice reale sul filo. La nota di RFC 9110 secondo cui è «molto più giovane… e potrebbe non essere riconosciuto ovunque» non riguarda solo i browser: è la cautela generale della specifica per il deployment di 308. Nel 2026 il suo impatto pratico si vede soprattutto negli strumenti, non nei browser mainstream, ma vale come cautela di base della specifica, non come qualcosa da considerare completamente superato.

Una nota non standard: “308 Resume Incomplete”

Una stranezza sottolinea quanto questo codice sia ancora giovane: nel mondo reale 308 non è soltanto un codice di redirect. L’API di upload di Google Drive riutilizza 308 con un significato completamente diverso, “Resume Incomplete”, per segnalare che un upload a blocchi si è fermato e che il client deve riprenderlo. John Mueller lo ha segnalato personalmente (vedi la scheda Quotes) e MDN documenta lo stesso uso non standard. Non cambia nulla sul 308 come redirect, ma mostra bene che 308 è un codice più recente e meno «stabilizzato» culturalmente del venerabile 301.

Catene e hop dei redirect si comportano allo stesso modo

Nulla di quanto detto cambia il funzionamento delle catene di redirect. Per default i crawler di Google seguono fino a 10 hop, anche se è un default e non una costante universale: la documentazione di Google nota che alcuni prodotti possono differire (lo strumento Ispezione URL, per esempio, non segue affatto i redirect). Controlla quindi il dato corrente nella documentazione Google invece di considerare 10 fisso per sempre. Il limite predefinito è identico sia per hop 301s sia per hop 308s. Se accatasti redirect, per esempio un vecchio percorso API che passa da due hop prima di arrivare, valgono le stesse regole per catene e loop: quando puoi, riduci la catena a un solo hop. Per la meccanica vedi l’articolo dedicato alle catene di redirect.

Try it live

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

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.