Il redirect 301 è un reindirizzamento permanente che indica ai browser ed ai motori di ricerca che un indirizzo URL è stato spostato permanentemente; in questo articolo ti spiegherò perchè usare il 301 redirect, quando è necessario creare un reindirizzamento e, soprattutto, come creare un redirect.
Il codice HTTP 301 serve ad identificare lo stato “Moved Permanently” (in italiano “Spostato permanentemente”) ed è molto utile per segnalare che una pagina web, una directory od un intero dominio è stato spostato in un altro posto, per tale motivo una persona od un bot che visiterà la vecchia pagina sarà reindirizzato automaticamente e velocemente nella nuova pagina.

Quando e perché usare il 301 redirect
Alcune volte capita di aver pubblicato un articolo e dopo hai sentito la necessità di cancellarlo. Per evitare che gli spider dei motori di ricerca arrivino in questa pagina e scoprano che non esiste più (visualizzando l’errore 404), devi effettuare un redirect, in questo modo, sia i motori di ricerca che i visitatori, non vedranno alcun tipo di errore e visualizzeranno direttamente la nuova pagina, non accorgendosi minimamente di questo spostamento.
La stessa cosa vale per una directory intera. Hai la necessità di cambiare il nome alla directory e non vuoi fare un reindirizzamento per ogni singolo file o pagina contentuto al suo interno, con il redirect 301 puoi scegliere di reindirizzare sia la directory che tutti i file che le appartengono.
esempio: da www.sitoweb.com/nomedirectory/ a www.sitoweb.com/directorynome/
Se vuoi cambiare il nome del tuo dominio e non vuoi fare tutto il lavoro da capo, puoi effettuare un redirect 301 da un dominio all’altro senza che questo abbia delle conseguenze nell’indicizzazione dei motori di ricerca.

Redirect 301 in html, php e htaccess
Esistono diversi modi per effettuare un redirect 301, è possibile impostarlo tramite un meta tag nell’html di una pagina, tramite uno script in PHP, in asp, in perl ed anche tramite un file .htaccess. Mi limiterò ad introdurre solamente quelli più utilizzati.
Redirect 301 in HTML
Il reindirizzamento 301 può essere incluso facilmente all’interno di un file con estensione .html e, precisamente, va inserito dentro il tag <head>.
<META HTTP-EQUIV=Refresh CONTENT="0; URL=http://www.nuovodominio.com">
Questo redirect va utilizzato soltanto nel caso in cui non è possibile accedere al file .htaccess (di cui parleremo qualche paragrafo più in giù).
Redirect 301 in PHP
Se il tuo sito è in php allora puoi impostare un redirect 301 tramite il seguente codice:
<?
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: http://www.nuovodominio.com" );
?>
Nella prima riga dobbiamo impostare il 301 Moved Permanently, mentre nella seconda riga dobbiamo riportare l’indirizzo URL del nuovo sito. Puoi effettuare un redirect anche verso una singola pagina scrivendo l’URL completo subito dopo “Location” (es: “Location: http://www.sitoweb.com/nuovapagina.php”).
Perchè usare il 301 redirect con .htaccess
Con il file .htaccess è possibile impostare uno o più redirect 301 molto più facilmente rispetto che agli altri metodi sopra descritti. Creare un reindirizzamento con htaccess è sicuramente il metodo più consigliato ed utilizzato dai programmatori. Di seguito ti mostrerò perchè usare il 301 redirect con .htaccess è più consigliabile rispetto ad altri metodi.
Il file .htaccess non è sempre presente all’interno del tuo spazio web, per verificare la sua esistenza e, nel caso contrario, crearlo, accediamo tramite client FTP. Il file htaccess è facilmente riconoscibile perché inizia proprio con il puntino “.htaccess”.
Tramite questo metodo puoi reindirizzare una singola pagina, un’intera directory o addirittura un intero dominio.
Dopo aver creato il file puoi semplicemente scrivere:
redirect 301 /nomepagina.html http://www.sitoweb.com/nuovapagina.html
Il primo URL “nomepagina.html” è riferito all’attuale pagina che vuoi spostare e quindi “http://www.sitoweb.com/nuovapagina.html” è l’URL completo in cui la pagina verrà spostata e visualizzata.
Se desideri spostare un intero dominio (insieme a tutti i suoi file e pagine contenuti), scrivi queste regole nel tuo file .htaccess:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.nuovositoweb.com/$1 [R=301,L]
Chi ha la necessità di fare degli reindirizzamenti particolari può utilizzare il mod_rewrite di Apache. È un attimino più complesso rispetto ai metodi utilizzati fin’ora e va studiato a fondo prima di essere utilizzato.
Con questo procedimento possiamo utilizzare le espressioni regolari e se volessimo fare un esempio potremmo prendere in considerazione la trasformazione di un URL. Per esempio abbiamo creato un sito in PHP e abbiamo la necessità di rendere il nostro URL friendly.
RewriteEngine ON
RewriteRule ^([a-zA-Z0-9_\-]+)/$ /frutta-verdura/frutta.php?titolo=$1 [L]
Se prima l’URL visibile nella barra della navigazione dei browser era http://www.sitoweb.com/frutta-verdura/frutta.php?titolo=banana, con il rewrite rule abbiamo trasformato l’URL in http://www.sitoweb.com/frutta-verdura/banana
Redirect 301 da www a non-www e viceversa

Se prima era possibile accedere ad un sito scrivendo l’intero URL (es: www.google.com) adesso è possibile farlo anche scrivendo nella barra di navigazione semplicemente “google.com” omettendo il “www”.
Questo ha suscitato diverse domande ed opinioni, quel che è importante sapere è che se non effettui un redirect da un dominio con www. verso il non-www o viceversa, i motori di ricerca penseranno che www.nomesito.com e nomesito.com siano due domini differenti. Per rispondere alla domanda “perchè usare il 301 redirect per spostare un dominio da www a senza www” possiamo scrivere una semplice regoletta sul file .htaccess:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^nomesito\.com$ [NC]RewriteRule ^(.*)$ http://nomesito.com/$1 [R=301,L]
In questo esempio abbiamo fatto un redirect da www.nomesito.com a nomesito.com, se invece desideri fare esattamente l’opposto, dovrai scrivere:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L]
Perché usare il 301 redirect su WordPress
Così come nel caso di semplici pagine html o php, se utilizziamo WordPress è possibile effettuare il redirect delle pagine sia andando a modificare il file .htaccess che tramite plugin.
Uno dei plugin che permettono di effettuare uno o tanti redirect è Seo redirection con il quale puoi stabilire se creare un redirect da una pagina, una cartella o regex, e reindirizzare verso una pagina o cartella, e scegliere quale tipo di redirection usare “301, 302 o 307”.
Per installare questo plugin accedi al pannello amministrativo di WordPress, clicca su “Plugin” > “Aggiungi nuovo” e nel campo “cerca plugin” scrivi “SEO Redirection”. Nei risultati troverai “SEO Redirection Plugin” di Fakhri Alsadi e cliccando sul pulsante “installa adesso” in pochi minuti potrai attivare il plugin.
Per iniziare a creare i primi redirect, clicca su “Impostazioni > SEO Redirection”. Nella scheda “Custom Redirections” potrai creare un redirect impostando l’URL di provenienza e quello di destinazione insieme al tipo di redirect (in questo caso “301”), in “Post Redirects” vedrai tutti i post che hai spsotato tramite il campo che si trova prorpio dentro ad ogni articolo nuovo o da modificare, in “404 Error Link” potrai visualizzare tutte le pagine che hanno inviato un errore 404 e che quindi necessitano di un redirect verso una pagina esistente.
AdCrescendo.com