Provatoo.NET

Diario di bordo di una sviluppatrice

Tutorial

Come impostare Redirect 301 su .htaccess

Chi non ha mai avuto bisogno di un redirect 301?

Vediamo come implementare il redirect 301 con htaccess e le principali regole di reindirizzamento che ci possono risultare molto utili per eliminare duplicazioni sistemiche, mantenere il posizionamento in seguito al restyling di un sito web (quando vi è l’esigenza di modificare gli URL) oppure quando si migra ad una nuova piattaforma (ad esempio da Joomla a WordPress).

 

Perché il redirect 301 è fondamentale

Il redirect 301 o spostamento permanente è il processo tramite il quale un URL viene reindirizzato verso un URL differente.

Ogni buon consulente SEO dovrebbe sapere che nel momento in cui si modifica la struttura delle URL di un sito, occorre necessariamente implementare i redirect 301 in modo che ogni vecchio URL deve ridirezionare verso il corrispondente nuovo URL al fine di:

  1. non generare errori 404 (restituiti dal server quando la risorsa richiesta non esiste);
  2. non vanificare l’effetto sul ranking di eventuali backlinks che puntano alle vecchie URL;
  3. non perdere il traffico generato dalla vecchie URL.

Evidentemente in pochi si preoccupano di questi aspetti, in quanto ancora oggi mi capita di dover intervenire su siti in cui la perdita di traffico dipende sistematicamente da una non corretta gestione dei redirect (o di una loro completa assenza).

Case history: qualche anno fa analizzando un’importante perdita di traffico sul sito di una multinazionale, mi resi conto di come i backlinks provenienti da altri siti (tra cui Wikipedia) puntavano a pagine che restituivano 404. Il danno si era verificato in seguito ad una migrazione da Joomla a WordPress poiché gli sviluppatori non si erano preoccupati di gestire questo aspetto con le dovute analisi. E’ stato sufficiente implementare dei semplici redirect 301 via htaccess verso le nuove URL per recuperare tutto il traffico perso in circa una mese.

 

Differenza tra redirect 301 e 302

Lato utente la differenza fra redirect 301 e 302 è impercettibile, poiché in entrambi casi si viene reindirizzati verso il nuovo indirizzo. Anche i motori di ricerca, abituati alla cattiva implementazione dei webmaster, considerano entrambi questi reindirizzamenti come definitivi. In linea teorica però:

  • Redirect 301: reindirizzamento permanente;
  • Redirect 302: reindirizzamento temporaneo (protocollo HTTP 1.0) o trovato (protocollo HTTP 1.1).

Quindi il 301 è il redirect corretto da implementare nella maggior parte dei casi.

 

 

Redirect 301 htaccess intero sito

Quando si ha l’esigenza di reindirizzare in modo permanente le richieste da un vecchio dominio verso uno nuovo, la regola più corretta da inserire nel file htaccess presente nella root del vecchio dominio è la seguente:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.nuovodominio.com/$1 [R=301,L]

In questo modo si ottiene un reindirizzamento di massa di tutte le richieste dal vecchio dominio verso il nuovo dominio.

 

Redirect 301 htaccess singolo URL

Quando invece si vuole reindirizzare un vecchio URL verso un nuovo URL, la regola da inserire nell’htaccess è la seguente:

Options +FollowSymLinks
RewriteEngine on
Redirect 301 /vecchio-url.html http://www.dominio.it/nuovo-url.html

Questa regole permette di reindirizzare l’indirizzo http://www.dominio.it/vecchio-url.html verso l’indirizzo http://www.dominio.it/nuovo-url.html. In questo modo ogni volta che un client richiederà il file vecchio-url.html sarà automaticamente reindirizzato al file nuovo-url.html.

 

 

Redirect 301 htaccess da non www verso www e viceversa

Per prevenire duplicazioni sistemiche è corretto stabilire la versione canonica del dominio (detta anche dominio principale). A tal fine è buona prassi reindirizzare ogni URL senza www verso la versione con www(o viceversa). Per farlo la regola da inserire nel file .htaccess è:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.dominio\.it$
RewriteRule ^(.*)$ http://www.dominio.it/$1 [R=301,L]

In questo esempio, ogni qual volta richiediamo la versione senza www (http://dominio.it) viene restituita la versione con www (http://www.dominio.it).

Se invece abbiamo stabilito che la versione canonica deve essere quella senza www, la regola da inserire è:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^dominio\.it$ [NC]
RewriteRule ^(.*)$ http://dominio.it/$1 [R=301,L]

In questo secondo esempio ogni qual volta richiediamo la versione con www (http://www.dominio.it) viene restituita la versione senza www (http://dominio.it).

 

 

Redirect 301 per eliminare index.php dall’URL

Un problema che hanno molti siti e CMS realizzati in php è la presenza della stringa /index.php nelle URL(chi utilizza Joomla e Magento sa bene a cosa mi riferisco). Il codice da inserire nel .htaccess per eliminare index.php è:

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)index\.php$ /$1 [R=301,NC]

Conclusioni

Oggi abbiamo visto alcune buone regole per implementare il redirect 301 via htaccess. Naturalmente occorre testare il funzionamento di questi codici, i quali per poter funzionare potrebbe essere necessario variare le precedenti regole inserite nel proprio file .htaccess oppure le configurazioni del proprio server. Inoltre è consigliabile non copiare i codici indicati direttamente nel vostro file .htaccess, ma è preferibile copiarli prima in un file di testo per rimuovere la formattazione e solo in seguito nel vostro file htaccess. In caso contrario, le regole potrebbero non funzionare.

Se hai suggerimenti o per maggiori informazioni sui redirect 301 tramite htaccess non esitare ad utilizzare i commenti.

 

Articolo preso da: Valentino Mea

Provatoo.NET

Piccola imprenditrice, ma solo di statura :D