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.

Pubblicitร 

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

Altri contenuti interessanti

Pubblicitร 

Potrebbero interessarti queste guide

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...

5 strumenti SEO ufficiali dei motori di ricerca

Le nostre scelteGoogle Search ConsoleLa Search Console di Google...

Test dati strutturati: 4 strumenti di controllo e convalida dei Rich results

I dati strutturati (o structured data) sono un elemento...

Risolvere il problema "Serve Static Content From a Cookieless Domain"

Avete effettuato un test delle performance del vostro sito...

Doorway page: cosa sono e come funzionano

Con il termine Doorway Page (conosciute anche come Enter...

Differenza tra <b> e <strong>

Qual'รจ la differenza tra bold e strong? I tag...

5 strumenti per misurare la velocità del sito

Nonostante le connessioni in Banda Larga siano sempre più...
Pubblicitร