Come si usa il mod_rewrite: riscrivere le estensioni PHP HTML
Il modulo mod_rewrite è uno dei più celebri in ambito web per il server Apache: esso permette, con modalità che possono cambiare di parecchio a seconda del CMS utilizzato e dell’hosting sotto cui lavoriamo, di gestire gli URL reindirizzandoli a piacere, modificandone la struttura e rendendola più accessibile sia dal punto di vista dei motori che da quello degli utenti. Il nostro obiettivo, in questo caso, sarà quello di riscrivere le estensioni dei file del nostri sito (ad esempio mascherare file.php come file.html).
Verificare che il mod_rewrite sia abilitato. Potete chiedere direttamente al vostro hosting – solitamente viene reso accessibile di default anche sulle soluzioni ultra-low cost – per verificarlo create un file .php nella root del vostro sito con l’unica istruzione:
<?PHP php_info();?>
Aprendo il file in questione vedrete la lista di tutti i moduli abilitati, tra i quali dovreste trovare per l’appunto il modulo in questione in corrispondenza della riga “Loaded modules“. Se il modulo non fosse presente è necessario intervenire all’interno di httpd.conf (se siete su una VPS o un dedicato, come spiegato qui) oppure, in alternativa, chiedere al vostro provider di hosting di abilitarvelo.
Rinominare i file HTML in PHP (e viceversa). Per effettuare questa operazione è necessario:
- abilitare la riscrittura degli URL;
- impostare una regola che redirezioni tutti i file con estensione HTML(PHP) in PHP(rispettivamente HTML).
Per effettuare il primo passo basterà indicare nel file .htaccess:
RewriteEngine on
per il secondo invece dovremo sfruttare le espressioni regolari:
RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]
Se volessimo invece fare il viceversa (da PHP a HTML) la direttiva cambia di poco:
RewriteRule ^/?([a-z/]+)\.php$ $1.html [L]
Il file .htaccess finale presenterà dunque questa forma:
#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]
Per trovare ulteriori configurazioni molto comuni del file .htaccess consulta la nostra FAQ.