back to top

Redirect 301 e 302: quali sono le differenze e in che modo usarli correttamente

Quando implementiamo un redirect all’interno del nostro sito web è importante prestare molta attenzione allo stato HTTP attraverso il quale viene gestito il redirezionamento. Nel caso specifico è fondamentale cogliere la differenza tra un redirect 301 ed un redirect 302.

Molti webmaster, purtroppo, implementano dei redirect senza prestare attenzione allo stato HTTP ma questo è un errore gravissimo che può avere conseguenze sul posizionamento del nostro sito web. In questo articolo vedremo di capire perché e quali sono le differenze tra un redirect 301 e 302.

301 e 302: cosa sono questi numeri?

Questi due numeri fanno riferimento ai codici di stato HTTP cioè alla risposta che il server invia al client all’atto della richiesta di una risorsa, prima, eventualmente, di trasmetterne il contenuto.

Nel caso specifico questi due codici di stato appartengono alla famiglia 3xx che identifica i redirezionamenti ovvero il "trasferimento" automatico del client da una URL (quella richiesta) ad un’alra. Ma come funziona un redirect? facciamo un semplice esempio.

L’utente digita nel proprio browser il seguente indirizzo web:

http://www.miosito.com/pippo

e viene automaticamente reindirizzato su:

http://www.miosito.com/pluto

Prima che ciò avvenga, il webserver di miosito.com invierà, appunto, al client una risposta con stato HTTP 3xx ad indicare, appunto, che la risorsa richiesta (pippo) non è più disponibile ed al suo posto ne verrà mostrata un’altra (pluto).

Detto questo, in concreto la risposta del webserver avrà o codice di stato 301 oppure 302, la differenza è di grande importanza:

  • mediante un redirect 301 il webserver informa il client che la risorsa è stata trasferita in via permanente e definitiva;
  • mediante un redirect 302, invece, il webserver comunica al client che il trasferimento è provvisorio (quindi, in futuro, la risorsa richiesta tornerà ad essere disponibile).

Vediamo di seguito i due codici di stato così come definiti nel protocollo HTTP:

Redirect permanente:

301 Moved Permanently

Redirect temporaneo:

302 Found

Un esempio concreto di redirect 301

Vediamo un esempio di un ipotetico redirect permanente dovuto alla migrazione dei contenuti del sito da un dominio ad un altro. Ne consegue che ogni richiesta destinata al hostname vecchiosito.com dovrà essere reindirizzata definitivamente a nuovosito.com.

Di seguito la richiesta del client di accedere ad una specifica pagina del sito vecchiosito.com:

GET /pagina-abc.html HTTP/1.1
Host: www.vecchiosito.com

Segue la risposta del webserver che trasferirà l’utente sulla medesima pagina del nuovo dominio:

HTTP/1.1 301 Moved Permanently
Location: http://www.nuovosito.com/pagina-abc.html

In questo caso è stato impostato correttamente un redirect permanente in quanto il webmaster del sito ha migrato definitivamente i contenuti da un vecchio dominio (il quale, presumibilmente, verrà dismesso) ad uno nuovo.

Un esempio concreto di redirect 302

Vediamo, in pratica, un esempio concreto di domanda e risposta tra client e server in merito ad una risorsa trasferita provvisoriamente. Nel caso specifico l’utente chiederà di accedere ad una pagina di un sito momentaneamente in manutenzione ottenendo in risposta un redirect ad una pagina con il relativo avviso.

Di seguito la richiesta del client di accedere alla home-page del sito miosito.com:

GET /index.html HTTP/1.1
Host: www.miosito.com

Segue la risposta del webserver che trasferirà l’utente su una pagina ad hoc per avvisarlo della momentanea indisponibilità del sito web in quanto in manutenzione:

HTTP/1.1 302 Found
Location: http://www.miosito.com/manutenzione.html

Si noti come nel nostro esempio sia stato utilizzato correttamente lo stato 302: il trasferimento della richiesta sulla pagina di manutenzione, infatti, non è definitivo ma provvisorio in quanto al termine dei lavori la home-page del sito tornerà ad essere regolarmente disponibile.

Ma a chi importa dello stato HTTP?

Se per gli avventori del sito potrebbe non esserci alcuna differenza tra un redirect 301 ed uno 302 (in pratica l’utente viene sempre trasferito ad un’altra URL) per i motori di ricerca la differenza è sostanziale! Con un redirect di tipo 301, infatti, la vecchia URL viene cancellata e sostituita con quella nuova, viceversa con lo stato 302 il motore di ricerca non effettuerà alcun aggiornamento dei propri indici e manterrà in memoria le vecchie URL in attesa che tornino a funzionare correttamente.

Come potete immaginare, da un punto di vista SEO, si tratta di una differenza di grande importanza: implementare un redirect con un errato stato HTTP, infatti, potrebbe avere conseguenze più pesanti del previsto:

  • qualora la pagina sia stata trasferita definitivamente su un’altra URL ma si utilizzi erroneamente lo stato 302, infatti, il motore di ricerca potrebbe considerare le due pagine come duplicate ed applicare una penalizzazione;
  • viceversa qualora il trasferimento sia solo provvisorio (si pensi all’esempio del sito in manutenzione) ma, erroneamente, si utilizzasse un redirect 301 le conseguenze potrebbero essere disastrose: il motore di ricerca, infatti, potrebbe cancellare dal suo indice le pagine effettive del sito sostituendole con quelle provisorie (presumibilmente di scarso valore contenutistico)!

Prestare la massima attenzione allo stato HTTP dei redirect, quindi, è di grande importanza per il posizionamento del proprio sito web!

Come implementare un redirect ed inviare un codice di stato HTTP?

Un redirect può essere implementato in diversi modi, anche in puro HTML o con poche righe di codice Javascript! Per poter inviare un codice di stato HTTP, tuttavia, è necessario implementare il redirect lato server utilizzando, ad esempio, .htaccess oppure un linguaggio di scripting come PHP o ASP.

All’interno della guida alla creazione di redirect 301 presente in questo sito trovate tutti i codici necessari per implementare correttamente un redirect permanente. L’implementazione di redirect provvisori comporta, semplicemente, la modifica dei codici proposti per quanto attiene al codice di stato trasmesso.

Per completezza e chiarezza vediamo un esempio di redirect permanente implementato mediante il file .htaccess

RewriteEngine On
Redirect 301 /vecchia_pagina.html /nuova_pagina.html

Di seguito, infine, un esempio di redirect temporaneo:

RewriteEngine On
Redirect 302 /pagina_richiesta.html /pagina_provvisoria.html
Pubblicitร 
Massimiliano Bossi
Massimiliano Bossi
Stregato dalla rete sin dai tempi delle BBS e dei modem a 2.400 baud, ho avuto la fortuna di poter trasformare la mia passione in un lavoro (nonostante una Laurea in Giurisprudenza). Adoro scrivere codice e mi occupo quotidianamente di comunicazione, design e nuovi media digitali. Orgogliosamente "nerd" sono il fondatore di MRW.it (per il quale ho scritto centinaia di articoli) e di una nota Web-Agency (dove seguo in prima persona progetti digitali per numerosi clienti sia in Italia che all'estero).

Leggi anche...

Inviare email a piรน destinatari (senza mostrare tutti gli indirizzi email)

Inviare email multiple a un gruppo di destinatari senza...

Ottenere la spunta blu su Gmail e implementare BIMI per la posta elettronica

Hai notato una spunta blu accanto al nome del mittente in...

Cancellare recensione negativa su Google: quando è possibile (e come fare)

Le recensioni online sono diventate una parte fondamentale dell'esperienza...

Cosa significa Referral? Cos’è e come funziona il referral marketing?

l termine "referral" รจ un termine angloasassone traducibile in...

Creare siti multilingua e multiregionali

A seconda della tipologia di attività che si desidera...
Pubblicitร