Differenza tra un 301 redirect e gli altri redirect

Spostare una risorsa, in genere una pagina html, dovrebbe automaticamente comportare l’attuazione di una politica di redirect 301 come avevo già spiegato in passato.

Per dovere di cronaca, il redirect 301 serve a reindirizzare la navigazione da una pagina ad un’altra in modo automatico.

La domanda che vi pongo oggi è questa (frutto di una domanda a cui ho risposto recentemente). Perchè necessariamente un redirect 301 e non un redirect html? E’ vero, esistono diversi modi di effettuare un redirect, tra cui quello html, e se mi seguirete per le prossime righe, capirete anche voi perchè il 301 uno sia in assoluto il metodo migliore.

Il redirect via HTML

Questo si attua inserendo nell’intestazione della pagina web (quindi tra i tag head) il meta refresh che indica alla pagina di caricarne una successiva reindirizzando il browser verso un’altra pagina dopo un certo lasso di secondi. In gergo, questo viene chiamato anche il redirect dei poveri.

Il problema è che questo redirect opera in un contesto di pagine che esistono e che vengono caricate dal client, quindi di fatto al client che ne fa richiesta viene sempre trasferito un codice di stato 200 - pagina trovata. Non viene quindi data nessuna informazione significativa - per il caso in questione - sull’origine e sulla destinazione.

Per farla breve, ricorrete a questo sistema solo se non avete altra scelta, altrimenti non fatelo. Del resto è lo stesso W3C che ne scoraggia l’uso.

**UPDATE: **Google e’ ora in grado di riconoscere questo redirect come un 301, tuttavia utilizzare questo metodo solo se non se ne puo’ fare a meno.

Il redirect via JavaScript

Consiste in un blocco di codice javascript inserito negli appositi tag che non farà altro che cambiare l’indirizzo corrente con quello specificato. Nella fattispecie si tratta del comando location.href='http://www.indirizzodidestinazione.com/percorso;

Anche questo metodo non ci consente di specificare lo Status Code necessario.

Il redirect server side

In questo caso non c’è una riga di codice unica perchè a seconda del linguaggio utilizzato la soluzione è ovviamente diversa. Nello specifico, con questo sistema si può operare correttamente, restituendo anche lo status code corretto. Tuttavia la fattibilità e immediatamente propozionale con le conoscenze di chi deve fare la modifica, quindi se si conosce o meno il linguaggio di programmazione in uso sul sito.

Perchè i primi due redirect sono il male?

I primi due redirect sono il male perchè non specificando alcun tipo di “spostamento” intenzionale lasciano fraintendere ai motori di ricerca che la pagina caricata esista sempre; inoltre - di fatto - nessun valore (link juice) verrà mai trasferito dalla vecchia alla nuova pagina.

Parimenti, il motore di ricerca può fraintendere che un “refresh” così veloce della pagina (perchè solitamente si mette un tempo di intervallo pari a 0 secondi nel primo caso (redirect via html) mentre è una azione immediata nel caso javascript (a meno che non si contorni il codice con una istruzione timer) sia stato volutamente fatto per ingannare l’utente finale e il motore stesso, dando così luogo ad una forma di penalizzazione.

Peggio ancora se poi la pagina vecchia contiene lo stesso medesimo contenuto di quella di destinazione, in questo ulteriore caso si configura anche una penalizzazione per contenuti duplicati.

Il redirect 301 di contro informa il client chiamante che la vecchia pagina è stata spostata e di conseguenza il vecchio indirizzo non deve più essere tenuto in considerazione. Sebbene quindi - di fatto - la pagina in alcuni server può esistere ancora, non verranno generati problemi di sorta.

Come si fa a capire se un redirect 301 è stato assimilato? Per questo, rimanete sintonizzati su questo blog.