In questo articolo voglio parlare in modo semplice ma esaustivo del Redirect 301, importante per maneggiare i link del nostro sito, vecchio e/o nuovo che sia, anche in ottica SEO.
Arriva sempre il momento in cui facciamo aggiornamenti sostanziali al nostro sito internet, ritrovandoci a dover cambiare i link delle pagine che lo compongono. Questo capita quando eliminiamo delle pagine o degli articoli al nostro blog, quando cambiamo dominio, o soprattutto quando cambiamo la struttura di base. Chi ha un sito in Joomla! o vuole aggiornarne la versione dopo tanto tempo, chi invece vuole passare da Joomla! a WordPress e viceversa, o chi vuole unire due o più siti internet.
Questo comporta delle conseguenze anche dal punto di vista SEO, in particolar modo per la variazione dei link. Per evitare penalizzazioni da parte di Google è fondamentale effettuare dei reindirizzamenti permanenti delle pagine vecchie a quelle nuove, utilizzando semplici tecniche tanto care a Google: il Redirect 301. In questo articolo spiego brevemente come effettuare un Redirect 301 sia per i casi semplici che per quelli più complessi.
Rispetto agli altri articoli del mio blog, tratterò degli argomenti di stampo più tecnico, per cui cercherò di rendere accessibile alcuni concetti a quante più persone possibili, non esperte ma anche esperte, rivedendo alcune definizioni.
Su internet si trasmettono informazioni in diversi modi, ossia tramite dei protocolli. Quello più comune è il “modo” chiamato protocollo HTTP.
Quando navighiamo su internet il protocollo HTTP (ma non solo) gestisce la trasmissione di informazioni: il risultato della trasmissione viene codificato con dei codici numerici. Vi è mai capitato di navigare su un sito e vedere una pagina con il messaggio ERRORE 404? Sicuramente. 404 è il codice che indica pagina non trovata, o meglio: “mi hai chiesto di prendere informazioni accedendo alla pagina del link che mi hai segnalato ma a quel link non corrisponde nessuna pagina internet. Se siete curiosi di conoscere il significato di tutti i codici potete farlo da questo link: codici di stato HTTP.
Il codice 301 invece dice “ho cambiato un link del mio sito, se qualcuno vi accede reindirizzalo in modo permanente al nuovo link che ti segnalalo”.
Il redirect 301 serve proprio a questo: evitare gli errori 404, non graditi da Google, quando variamo alcuni link del nostro sito.
Vediamo in generale quali sono le tipologie di implementazione di un Redirect 301, per poi spiegare le varie sintassi più avanti.
Nel caso di redirect di un intero sito, scenario in cui ci si trova quando cambiamo il dominio dello stesso, bisogna individuare il file principale del nostro sito, ricrearlo (facendo una copia del vecchio, è sempre buona prassi) e scriverci dentro pochissime righe di codice che corrispondono all’istruzione di reindiriccamento con codice 301. Nel caso di siti o CMS sviluppati in php, è in genere index.php.
In alternativa possiamo lasciare il file principale così com’è ed inserire l’istruzione del redirect in un file chiamato .htaccess.
Il redirect di uno o più link può essere implementato in due modi principali:
La scelta dipende dai vari scenari e dalle varie problematiche che possono emergere per i motivi più disparati.
L’utilizzo del file .htaccess è consigliabile quando i redirect da effettuare sono pochi e specifici. Tale soluzione, infatti, sebbene più immediata, può comportare alcuni problemi: il problema classico e più frequente lo si ha quando i reindirizzamenti da effettuare sono tanti: il server che ospita il nostro sito ci fornisce un errore dovuto al problema in questione e non ci mostra le pagine del sito web, in primis la home page. Tale problema può essere raggirato ma comporta conoscenze tecniche importanti che ci permettono di scrivere codice avanzato.
Nel caso in cui lo scenario in cui operiamo prevede l’implementazione di tanti redirect è consigliabile utilizzare specifici plugin, ovviamente nel caso in cui utilizziamo CMS noti, come ad esempio WordPress, Joomla!.
Un plugin degno di nota per chi utilizza WordPress è Redirection: molto semplice da utilizzare, permette di effettuare anche reindirizzamenti complessi tramite l’utilizzo di espressioni regolari.
Per Joomla è possibile utilizzare il componente nativo Redirect (sotto la voce Componenti) o il plugin ReDJ, che permette l’utilizzo di espressioni regolari.
In generale la soluzione dei plugin risulta quella più efficace e semplice, per motivi legati all’hosting o se abbiamo creato il nostro sito web con WordPress. In quest’ultimo caso infatti spesso capita che la scrittura diretta su file .htaccess non dia i risultati sperati (a meno di scritture di codice avanzato).
Possiamo procedere in due modi: tramite file .htaccess o tramite scrittura di codice PHP, ASP, HTML, ecc..
CASO FILE .htaccess
Se volessi reindirizzare un vecchio sito, ad esempio
http://www.nstella.it
verso il nuovo
http://www.nicostella.it
andiamo nel file .htaccess di nstella.it e scriviamo il seguente codice
1 |
Redirect 301 /index.php http://www.nicostella.it/ |
o ache (è equivalente)
1 |
Redirect 301 http://www.nstella.it http://www.nicostella.it/ |
Possiamo anche utilizzare la sintassi alternativa
1 |
Redirect permanent /index.php http://www.nicostella.it/ |
Quindi la sintassi è:
Redirect 301 URL-VECCHIO-SITO URL-NUOVO-SITO
CASO SCRITTURA CODICE PHP O CASI ALTERNATIVI
In alternativa possiamo implementare il reindirizzamento tramite codice. Di seguito mostro solo il caso del codice PHP.
Per trasferire nstella.it, inserisco nel suo file index.php il seguente codice
1 2 3 4 |
<? Header( "HTTP/1.1 301 Moved Permanently" ); Header( "Location: http://www.nicolastella.it/" ); ?> |
che dice: “nstella.it si è trasferito in modo permanente sul sito nicolastella.it. Reindirizzami lì!”
Per i reindirizzamenti con altri codici vi rimando a questa pagina completa del wiki di Giorgio Taverniti.
Nel caso in cui vogliamo reindirizzare dei singoli link specifici, la sintassi è la stessa del caso precedente.
Caso redirect con .htaccess di una pagina da vecchio dominio a nuovo dominio.
1 |
redirect 301 www.nstella.it/blog/siti-web/ www.nicolastella.it/blog/siti-internet/ |
Reindirizzo
www.nstella.it/blog/siti-web/
su
www.nicolastella.it/blog/siti-internet/
Caso redirect con .htaccess di una pagina sullo stesso dominio.
1 |
redirect 301 /blog/siti-web/ www.nicolastella.it/blog/siti-internet/ |
Reindirizzo
www.nicolastella.it/blog/siti-web/
su
www.nicolastella.it/blog/siti-internet/
Effettuare questo tipo di redirect con i plugin è semplicissimo ed intuitivo in quanto i plugin ci chiedono semplicemente qual è il vecchio link da reindirizzare e su quale link deve essere reindirizzato.
Prendiamo ora in esame il caso in cui vogliamo effettuare un redirect 301 di un blocco di articoli di una categoria. Ad esempio:
voglio che tutti gli articoli del link
/blog/siti-web/
vengano reindirizzati su
/blog/siti-internet/
In questo caso utilizziamo una semplice regola delle espressioni regolari.
1 |
redirect 301 /blog/siti-web/(*) www.nicolastella.it/blog/siti-internet/($1) |
Cosa abbiamo fatto?
La stessa regola Vale per reindirizzamenti sullo stesso dominio
1 |
redirect 301 /blog/siti-web/(*) /blog/siti-internet/($1) |
Le espressioni regolari possono essere utilizzate anche nei plugin. Basta semplicemente seguire le istruzioni. Sul plugin Redirection di WordPress ci chiede di inserire il link di partenza, quello di arrivo, e ci chiede infine di fare un check della casella Regex, nel caso in cui abbiamo fatto uso di espressioni regolari (Regex = Regular Expression)
Se abbiamo una serie di link che iniziano con un numero? Questo è uno dei possibili scenari in cui ci ritroviamo se utilizziamo CMS come Joomla!
Supponiamo di avere una serie di link del tipo
www.nstella.it/blog/siti-web/124-realizzare-un-sito-internet
www.nstella.it/blog/siti-web/345-seo-e-web
ecc…
Sia nel caso in cui migriamo da un CMS ad un altro (da Joomla! a WordPress è un caso classico), sia nel caso in cui vogliamo ottimizzare gli url, togliendo quei fastidiosi numerini, possiamo effettuare un redirect 301 utilizzando le espressioni regolari.
1 |
redirect 301 /blog/siti-web/([0-9]+)-(.*) /blog/siti-internet/($2) |
Cosa abbiamo fatto?
Seguendo gli esempi precedenti :
Il link 124-realizzare-un-sito-internet verrà trasformato in realizzare-un-sito-internet;
124 sarà ($1)
realizzare-un-sito-internet sarà ($2)
il trattino che separa i numeri dal resto del link verrà ignorato
Questo è il caso in cui si fanno redirect sullo stesso dominio. Nel caso in cui si cambia dominio la sintassi è semplice:
1 |
redirect 301 /blog/siti-web/([0-9]+)-(.*) www.nicolastella.it/blog/siti-internet/($2) |
A dire il vero il caso (#4) visto in precedenza è già una combinazione di (#3) e (#4)
Possiamo utilizzare più redirect per reindirizzare varie categorie che hanno articoli i cui link iniziano con un numero.
Se non vuoi perdere tempo impostando i redirect nel file .htaccess puoi utilizzare un plugin WordPress implementato per la loro gestione.
Ce ne sono molti, basta effettuare una ricerca nella pagina dei plugin di WordPress. Io ti consiglio il plugin denominato Redirection.