User: Pass:
| More
Tu sei qui: Home::Articoli

Guida al mod rewrite di Apache

Guida al mod rewrite di Apache

Volete nascondere ai vostri visitatori la tecnologia usata per creare le vostre pagine web? Oppure meglio ancora vorreste che i nomi delle vostre pagine siano diversi da www.enricoiacono.it/index.php?id=1&type=news? Beh se state cercando questo, non dovete far altro che modificare alcuni settaggi del vostro Server Apache, in particolare il modulo Apache mod_rewrite.

Prima di cominciare dovreste dare uno sguardo alle espressioni regolari.

Di solito questo modulo è gia attivo sulla maggior parte dei server online, se vogliamo testare il mod rewrite di Apache in locale:

- per Apache2 a2enmod rewrite come root
- per Apache1 è necessario decommentare la linea LoadModule mod_rewrite nel file di configurazione

Apache di default ignora i file .htaccess (il file che servirà al nostro scopo) - per farglieli leggere devi modificare la direttiva AllowOverride all'interno del file di configurazione. Ricordiamoci di riavviare il webserver e di lanciare un phpinfo(), troveremo sotto Loaded Modules mod_rewrite.

Pronti via!

Aprite notepad e scrivete queste 2 regole:

RewriteEngine On
RewriteRule ^index.html$ index.php [L]

La prima linea attiva l'engine (va sempre inserita)
La seconda linea specifica una regola (RewriteRule) composta da:
  • l'URL da riscrivere, tra ^ (inizio stringa) e $ (fine stringa), quasi sempre formato da espressioni regolari
  • l'URL al quale inviare la richiesta
  • parametri (tra parentesi quadre, separati da virgole)
    • L "ultimo" -> paragonabile al break, dice all'engine di fermarsi e di non controllare le altre regole
    • R=301 -> invia un header di contenuto spostato in modo permanente e crea il redirect
    • R=302 -> invia un header di contenuto spostato in modo temporaneo e crea il redirect
    • QSA "accoda query string" -> se l'URL richiesto contiene più parametri di quelli previsti, vengono accodati - utile se si vogliono mettere parametri a pagine con indirizzi riscritti (!!).

Inserendo queste due righe in domain.tld/.htaccess, quando un utente visita domain.tld/index.html il webserver invia la pagina domain.tld/index.php. L'utente non si accorge di niente.


Se fooindex.php non esiste, l'utente vede "404 fooindex.php", anche se ha richiesto index.html, index.html può anche non esistere: il webserver invierà al client direttamente il file php senza neppure curarsi del file html.

Salvate il file con nome ".htaccess" e mettetelo sul vostro server dove sarà presente index.php, se richiamerete index.html, vi apparirà come per magia index.php, se non funziona guardate se avete configurato bene Apache.

Guida al mod rewrite di apcahe 2 parte




di Enrico Iacono




Tags: guida apache, mod rewrite, rewrite, apache