Tutorial: come rimuovere le estensioni .php .html . htm con .htaccess

Recentemente volevo rimuovere le estensioni dal mio sito Web, in modo da rendere gli URL più facili da usare per l’utente e per i motori di ricerca. Ho visto dei tutorial su come rimuovere l’estensione …

Recentemente volevo rimuovere le estensioni dal mio sito Web, in modo da rendere gli URL più facili da usare per l’utente e per i motori di ricerca. Ho visto dei tutorial su come rimuovere l’estensione .php, ma poi mi è venuto in mente che avrei dovuto rimuovere anche l’estensione .html o anche altre estensioni. In questo tutorial ti mostrerò come farlo modificando il file .htaccess .

Che cos’è un file .htaccess

Un file .htaccess è in realtà un semplice file ASCII usato da Apache che si può creare o modificare con un semplice editor di testo tipo Blocco note di Windows o TextEdit sul Mac. Questo file consente in pratica al server Apache di gestire e modificare la configurazione in base alla directory contente i files del sito web.

Essendo per-directory influisce sul contenuto della directory principale e di conseguenza delle sotto-directory, ma può essere che ogni sotto-directory contenga un file .htaccess specifico e quindi si può creare un configurazione complessa.

Caratteristiche

Con il file .htaccess si possono fare diverse operazioni:

  • Reindirizzare l’utente a una pagina diversa
  • Protegger con password una directory specifica
  • Bloccare gli utenti tramite il n. IP
  • Impedire l’hot-linking delle tue immagini
  • Riscrivere gli URL
  • Specificare i tuoi documenti di errore

per quello che serve in questo tutoria ci concentreremo su “URL rewriting” ovvero la riscrittura degli URL.

Rimozione delle estensioni

Andiamo allora a rimuovere l’estensione .php di un file, ad esempio supponiamo che nel nostro sito web sia presente un file tipo http://www.ilmiositoweb.com/login.php ed invece noi vogliamo che il motore di ricerca lo legga come http://ilmiositoweb.com/login dovremo inserire nel file .htaccess i seguenti comandi:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Se invece l’estensione da rimuovere provenga da un file .html ad esempio http://ilmiositoweb.com/lamiapagina.html è sufficiente modificare l’ultima riga del codice sopra, in modo che corrisponda all’estensione del file:

RewriteRule ^([^\.]+)$ $1.html [NC,L]

Tutto sommato sembrerebbe abbastanza semplice, no? Ora puoi collegare le pagine all’interno del documento HTML senza dover aggiungere l’estensione della pagina. Per esempio:

<a href="http://ilmiositoweb.com/lamiapagina" title="la mia pagina">La mia pagina</a>

Aggiunta di una barra finale alla fine

Tuttavia, in molti casi, potrebbe essere necessario aggiungere una barra proprio alla fine dell’URL. In questo caso non prendere in considerazione il primo snippet e usa il codice qui sotto. Le prime quattro righe riguardano la rimozione dell’estensione e le seguenti il reindirizzamento, con l’aggiunta della barra finale.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]

Varianti

E’ poi possibile, in alcuni hosting providers, che sia necessario apportare delle modifiche per rimuovere le estensioni, tipo abilitare Multiviews prima, nel qual caso prima dell’istruzione RewriteEngine On va inserita la riga di comando Options +Multiviews .

Se poi temi che i motori di ricerca possano indicizzare queste pagine con estensioni modificate come contenuti duplicati, allora puoi aggiunger un <canonical> meta tag nel <head> del file HTML come ad esempio:

<link rel="canonical" href="https://ilmiositoweb.com/lamiapagina" />

Lascia un commento