Mod rewrite Apache2

10 ottobre 2007

Probabilmente avrete sentito parlare di Virtual Host con apache2. In poche parole si tratta, nella maggior parte dei casi, di rispondere con i contenuti di una subfolder ad una richiesta via dns.

Utilizzo abituale

Questa funzionalità viene usata soprattutto dagli hosting multi-dominio che ospitano più siti web su una sola macchina o su più macchine con lo stesso ip. Per esempio se il server contiene le seguenti cartelle:

/var/www/foo.tld
/var/www/foobar.tld
/var/www/bar.tld

è possibile fare in modo che chi chiama foobar.tld riceva i contenuti della subfolder sopra elencata. Ma se volessimo solo capire come funziona il modulo che si occupa di questo?

Concetti di base

Le regole per mod_rewrite possono essere definite sia nella configurazione stessa di apache2 che nei files .htaccess all’interno delle subfolder. Per quanto riguarda la configurazione diretta in apache le stesse regole che vedremo vanno inserite nella definizione del Virtual Host stesso.

Definizione di un esempio

Supponiamo di avere il nostro sito web raggiungibile da http://www.dominio.tld e di dover configurare il sottodominio foo.dominio.tld per fare un redirect verso un altra pagina, per esempio http://www.un_altro_dominio.tld. Come prima cosa dovremo configurare un record A o CNAME che venga risolto come http://www.dominio.tld, ma non approfondiremo questo concetto. Una volta fatto questo creiamo un file .htaccess all’interno della cartella con i files e modifichiamolo così:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^foo.dominio.tld
RewriteRule ^(.*)$ http://www.un_altro_dominio.tld$1 [L,R=301]

Esaminiamo le varie istruzioni. La prima serve per abilitare mod_rewrite, la seconda verifica che si provenga dal nostro sottodominio, la terza applica spudoratamente il redirect agganciandoci i path/parametri (variabile $1) se la condizione precedente è rispettata (flag L). Il flag R specifica qual’è il response code HTTP. Esistono alcuni flag tra cui il flag NC che permette di fare una ricerca case insensitive e quindi anche richiamando FOO.dominio.tld verrebbe eseguito il redirect.

Se vogliamo possiamo aggiungere anche il flag P in modo che l’url nella barra dell’indirizzo rimanga quello richiesto. Per fare questo è necessario avere abilitato i moduli mod_proxy e mod_proxy_http.

Informazioni utili

Ovviamente quanto scritto è solo una delle svariate cose che si possono fare con mod_rewrite. Per maggiori informazioni consultare direttamente la documentazione di Apache.

Annunci

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: