Il modulo mod_rewrite è probabilmente uno dei più noti e diffusi in ambito web sotto server Apache: esso permette, infatti, di gestire al meglio gli URL del nostro sito, personalizzando svariate opzioni, utili nell'ambito dell'indicizzazione sui motori di ricerca dei contenuti. Il modo più usato per accedere alle impostazioni di questa componente del server consiste nel modificare il file .htaccess (il punto davanti indica che si tratta di un file nascosto, che solitamente è accessibile e modificabile anche mediante FTP), il quale deve essere posto nella cartella /public_html oppure, a seconda dei casi, /www.
Di seguito si riportano alcuni esempi utili da cui poter prendere spunto per configurare il proprio sito a seconda delle necessità. E' da tenere presente non tutte le configurazioni funzionano su tutti i server e per tutte le tipologie di siti e CMS e che, qualora si combinino più parti di esempi - come due redirect differenti che devono funzionare sullo stesso sito- non è sufficiente fare copia-incolla ma bisogna “fondere” le configurazioni a formare un unico file con sintassi valida (si veda la documentazione ufficiale per maggiori informazioni).
#specifica la pagina di default del sito
DirectoryIndex miaindex.html
#redirect da alfa.html verso beta.php
RewriteEngine on
RewriteRule ^/?alfa\.html$ beta.php [L]
#redirect da tutti i file con estensione .html ad altrettanti .php
# ovvero : “cambia” o maschera l'estensione dei file
RewriteEngine on
RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]
#nasconde l'estensione .PHP dal nome del file
RewriteRule ^/?([a-z]+)$ $1.php [L]
#redirect SEO-friendly
#da http://miosito.com/mostra.php?paese=ITALIA®ione=Calabria&citta=Cosenza
verso http://miosito.com/ITALIA/Calabria/Cosenza
RewriteRule ^/?([a-zA-Z_]+)/([a-zA-Z_]+)/([a-zA-Z_]+)$ mostra.php?paese=$1®ione=$2&citta=$3 [L]
#solo i seguenti IP possono accedere al tuo sito
allow from 64.95.219.140
allow from 210.23.45.67
# Redirect globale (di tutte le pagine) da vecchio.com oppure www.vecchio.com a nuovo.it
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www.vecchio.com$ [OR]
RewriteCond %{HTTP_HOST} ^vecchio.com$
RewriteRule ^(.*)$ http://www.nuovo.it/$1 [R=301,L]
#evitare che il sottodominio1 sia accessibile, e re-direziona automaticamente al dominio principale
RewriteCond %{HTTP_HOST} ^sottodominio1\.dominio-principale\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.sottodominio1\.dominio-principale\.com$
RewriteRule ^(.*)$ "http\:\/\/www\.dominio-principale\.com\/$1" [R=301,L]
# Non consentire il prefisso .www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?miosito\.it)$ [NC]
RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]
# Utilizza sempre il prefisso .www
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([a-z.]+)?example\.com$ [NC]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule .? http://www.%1miosito.it%{REQUEST_URI} [R=301,L]
# All'apertura del sito definisci una sotto-directory di default
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ /directory-default/ [R=301,L]
</IfModule>
# Redirect da una vecchia cartella alla nuova
RewriteEngine on
RewriteRule ^/?vecchia([a-z/.]*)$ /nuova$1 [R=301,L]
# Utilizza sempre il protocollo https (SSL)
RewriteEngine On
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://www.miosito.it/$1 [R=301,L]
# blocca il traffico dai referer indesiderati
RewriteEngine on
Options +FollowSymlinks
RewriteCond %{HTTP_REFERER} sitospam1\.com [NC,OR]
RewriteCond %{HTTP_REFERER} motorericerca2\.com [NC,OR]
RewriteCond %{HTTP_REFERER} forumspam3\.com [NC]
RewriteRule .* - [F]
# indica i tipi di file NON ammessi sul server
RewriteEngine on
RewriteRule .*\.(jpg|jpeg|gif|png|bmp|exe|swf)$ - [F,NC]
# evita hotlinking delle immagini
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?miosito\.it/ [NC]
RewriteRule \.(gif|jpg|png)$ - [F]
Per maggiori informazioni sui nostri piani hosting Linux vi suggeriamo di visitare il nostro sito web.