Parecchi webmaster hanno l’esigenza per diversi motivi di dover effettuare dei redirect, siano essi redirect 301 (Moved Permanently) o redirect 302 (Moved Temporarily), in questo articolo cercheremo di capire quale fà al caso nostro e come realizzarli tecnicamente. Un redirect si può effettuare in molteplici modi, sia lato client che lato server. Lato client la soluzione più semplice è utilizzare javascript, mentre lato server si può effettuare direttamente tramite istruzioni al webserver oppure all’interno di pagine dinamiche quali PHP, ASP, ASP.NET e così via. Illustreremo in questo articolo i redirect effettuati lato server con il webserver Apache e l’ausilio del file .htaccess.
La prima esigenza più comune che un webmaster deve affrontare è il corretto instradamento degli utenti e degli spider dei motori di ricerca, in questo ambito vengono difatto utilizzati i redirect.
Primo esempio: sito.it Vs www.sito.it
Quando registriamo un dominio di secondo livello possiamo di utilizzarlo così com’è (sito.it) oppure possiamo come convenzione utilizzare il sottodominio di terzo livello www. (www.sito.it). La cosa che parecchi webmaster vogliono evitare è la possibilità che alcuni utenti e spider utilizzino la prima soluzione e altri la seconda, quindi opta per il redirect permanente verso il sito con il www. Per implementare questa situazione dobbiamo inserire nel file .htaccess il seguente codice:
RewriteEngine on
rewritecond %{http_host} ^sito.it
rewriterule ^(.*)$ http://www.sito.it/$1 [r=301,L]
In questo modo diciamo al mod_Rewrite di Apache che qualsiasi richiesta al dominio sito.it e quindi pure sito.it/nomepagina1.htm ecc.. vengono rigirate tramite redirect 301 tutte su www.sito.it e quindi pure su www.sito.it/nomepagina1.htm
Secondo esempio: Sito in manutenzione o under costruction
Potreste avere l’esigenza di dirottare qualsiasi utente che chieda una qualsiasi pagina del sito su una pagina “spiacente manutenzione in corso”, per poi ripristinare il corretto uso del sito dopo i lavori di manutenzione. Essendo un redirect temporaneo useremo il 302 anzicchè il 301 usato nell’esempio precedente. Passiamo alle istruzioni:
RewriteEngine On
Rewritecond %{http_host} ^www.sito.it
Rewritecond %{request_uri} !/manutenzione\.html$
Rewriterule .* /manutenzione.html [R=302,L]
Come prima impartiamo le istruzioni al modulo mod_rewrite di Apache in modo che qualsiasi richiesta al sito (www.sito.it) che arrivi venga dirottata sulla pagina manutenzione.html tranne però le richieste che arrivano direttamente sulla pagina manutenzione.html altrimenti si creerebbe un loop infinito di redirect.