Programmazione Web » Apache » Mod Rewrite: modificare gli url con Apache
Mod Rewrite: modificare gli url con Apache
Difficoltà:
Scritto da Alberto Giuliani
Sito Web: http://www.agwebsolutions.it ![]()
Questo tutorial è stato letto 772 volte
Tramite il modulo mod_rewrite, Apache permette di modificare gli indirizzi URL a nostro piacimento, di modo da risultare funzionali al nostro sito. Infatti, siti web che usassero tecnologie PHP e MySQL spesso si trovano a dover trattare URL dinamici in cui compaiono query di selezione con variabili.
Ad esempio, molto comuni sono gli indirizzi del tipo: "http://www.miosito.com/pagina.php?variabile=xx". In siti più complessi, possono essere presenti URL che trattano più variabili, quindi: "http://www.miosito.com/pagina.php?variabile1=xx&variabile2=xx".
Logicamente non c'è limite al numero di variabili se non quello dettato dal programmatore stesso.
Ora, questa tipologia di indirizzi risulta sicuramente complessa e articolata, tanto che comporta due notevoli svantaggi:
- E' di difficile memorizzazione da parte dell'utente
- I motori di ricerca difficilmente inseriscono tali URL nelle loro cache, soprattutto se contengono più di una variabile.
Il nostro obiettivo è quindi quello di far memorizzare all'utente e ai motori degli indirizzi più semplici del tipo www.miosito.com/sezione/pagina.html che il nostro server converta automaticamente negli indirizzi dinamici PHP contenenti le variabili.
Apache offre un metodo molto semplice ed efficace per ovviare a questo problema.
Creiamo un file ".htaccess" e salviamolo nella cartella principale (root) del nostro sito.
NB: ".htaccess" non indica l'estensione del file, bensì il nome e l'estensione assieme. Non dobbiamo quindi assegnare un nome a piacere.
Come secondo passaggio, digitiamo nel file questo codice:
RewriteEngine on
RewriteRule ^tutorials/([^/]+).html tutorial.php?identificatore=$1 [L]
L'esempio riguarda la trasformazione dell'URL: "tutorials/xxx.html" nell'URL: "tutorial.php?identificatore=xxx", dove "xxx" rappresenta una sequenza di caratteri digitata dall'utente e che corrisponde al valore della variabile dell'URL complesso.
Traduciamo ora in un discorso logico il codice dell'esempio. La prima riga attiva il motore di riscrittura. La seconda dice di sostituire qualsiasi cosa simile a "tutorials/(qualsiasi carattere escluso lo slash).html" con "tutorial.php?identificatore=(caratteri digitati)".
Generalizziamo quindi l'esempio:
RewriteEngine on
RewriteRule ^qualcosa/([^/]+).estensione qualcosa.php?identificatore=$1 [L]
Logicamente ".estensione" è facoltativo, e dipende dalle nostre esigenze. Da notare "identificatore=$1" che imposta il valore della variabile alla prima sequenza di caratteri digitata dopo lo slash.
Possiamo quindi complicare la situazione aggiungendo più variabili e sequenze:
RewriteEngine on
RewriteRule ^qualcosa/([^/]+)/([^/]+).estensione qualcosa.php?identificatore=$1&identificatore2=$2 [L]
Ovviamente prima di utilizzare i moduli di Apache è bene segnalarlo al gestore del server che ospita il vostro dominio per evitare di causare eventuali danni al dominio o alla macchina.

