Tutorial PHP

Home | Tutorial PHP | Art. # 55

URL Rewriting in PHP col Mod Rewrite

Registrazione Domini
Registrazione Domini Internet ai prezzi più bassi d'Europa: soli 5,40 euro più IVA all'anno!

Apache, il Web Server per l'esecuzione di pagine PHP su server Linux, mette a nativamente disposizione degli sviluppatori un sistema di URL Rewriting (scrittura delle URL) per la simulazione di pagine statiche.

Immaginiamo una sezione dedicata alle news del sito in cui avremo un unico file che espone le notizie, ad esempio notizia.php, che verrà quindi valorizzato come segue:

notizia.php?id=1

che legge la notizia numero 1 dal database. Ai fini dell'indicizzazione nei motori di ricerca è molto più comodo avere una URL rappresentata da un file statico come il seguente:

notizia_1.html

ed è anche molto più elegante e semplice da ricordare.

Apache dispone del modulo chiamato mod_rewrite che permette di riscrivere le URL direttamente attraverso delle espressioni regolari sul Web Server, simulando quindi l'esistenza di un file statico.

Il file che ottempera allo svolgimento di questa funzionalità è .htaccess (file di sistema di Linux da inserire nella root del sito) che si crea non rinominando un file di testo esistente, bensì creandolo da zero con un qualsiasi editor di testo puro e salvandolo con l'opzione "tutti i file".

Il file .htaccess, finalizzato alla URL Rewriting, ha come prima riga di codice la seguente istruzione:

RewriteEngine On

ovvero un invito ad Apache all'utilizzo del suo motore di rewriting, il RewriteEngine.

Utilizzeremo la seguente sintassi per riscrivere i file PHP dinamico in modo statico, come evidenziato in precedenza:

RewriteRule ^notizia_([^/]+).html notizia.php?id=$1 [L]

La regola di riscrittura RewriteRule funziona secondo la seguente sintassi:

RewriteRule URL_STATICA URL_DINAMICA

ovvero:

RewriteRule URL_FINTA URL_VERA

E'possibile anche riscrivere una URL a due o più parametri. Prendiamo come esempio la seguente URL:

citta.php?nome=napoli&id=10

Trasformiamola in:

citta_napoli_10.html

L'espressione regolare da utilizzare è la seguente:

RewriteRule ^citta_([^/]+)_([^/]+).html citta.php?nome=$1&id=$2 [L]

Nota: ogni versione di Apache, specialmente se installato su diverse distribuzioni di Linux, presenta un differente sistema di gestione dei caratteri speciali delle espressioni regolari. Allo scopo si consiglia di chiedere maggiori dettagli al proprio fornitore di Hosting prima di procedere con la riscrittura delle URL del proprio sito.

 

Scritto in data 24/02/2008

Segnalalo ad un Amico | Aggiungilo ai Preferiti

© 2008 Appunti PHP - A cura di Luca Ruggiero - Partita IVA 05564851219 - Privacy | Pubblicità | Contatti