mercoledì 5 settembre 2012

Redirect 301 con metacarattere ?

Ciao a tutti!
Oggi vi mostrerò come effettuare il redirect permanente HTTP 301 sul vostro sito internet, ovvero quell'operazione che mostra a client ed agli spider dei motori di ricerca che una pagina è stata spostata o non esiste più.
 
Questa operazione apparentemente banale, è molto importante in ambito SEO in quanto consente di redirigere il traffico altrove senza perdere preziosi punti di indicizzazione e il posizionamento all'interno dei motori di ricerca.
 
Di per sè non è un'operazione complessa ma i problemi sorgono con le querystring, ovvero con quei link che hanno la seguente sintassi:
 
index.php?param1=10&param2=test
 
Normalmente infatti scriveremmo una sintassi del tipo:
 
  1. RewriteEngine on
  2. Options -Multiviews
  3. RewriteRule ^index.php?param1=([0-9]*)&param2=([a-z]*)$ redirect301.php [L]
 
con la prima parte (racchiusa tra ^ e $) il link a cui si punta e la seconda parte (in questo caso redirect301.php) il link a cui si vuole redirigere l'utente/crowler. Il problema sorge per il fatto che la prima parte della riga contiene il metacarattere ? (punto di domanda) che nelle espressioni regolari è utilizzato per indicare la ripetizione di zero o una volta del carattere o gruppo di carateri che segue. In virtù di ciò, il server apache ferma l'analisi della stringa al ? per cui processa soltanto index.php generando un comportamento non desiderato.
 
Per risolvere questa situazione scomoda si fa ricorso ad una riga ulteriore di codice da inserire nel file .htaccess che è una condizione di riscrittura di tipo querystring, ovvero il gruppo di parametri che si trovano dopo il ? nel nostro link. Qui di seguito vi mostro semplicemente come fare:
  1. RewriteEngine on
  2. Options -Multiviews
  3. RewriteCond %{QUERY_STRING} ^param1=([0-9]*)&param2=([a-z]*)$
  4. RewriteRule ^index.php$ redirect301.php [L]
Vi consiglio anche un sito internet da cui fare prove on-line di correttezza della vostra sintassi:
 
 
E con questo vi saluto e vi dò appuntamento alla prossima guida.
 
Stay tuned!