Come rimuovere le estensioni da un URL tramite htaccess

Difficoltà:    

Capita a tutti (forse anche troppo spesso) di imbattersi in siti web i cui URL non sono affatto user friendly.
Oltre alle stringhe dinamiche, i parametri e i caratteri speciali, senza dubbio la parte più irritante di un URL poco funzionale è l’estensione del file scritta alla fine: .html, .htm, .php, .asp e via dicendo.

Questo tipo di permalink rende difficile a un utente esplorare il sito con facilità, magari cancellando una parte di URL per arrivare su un’altra pagina, ed è fortemente penalizzante sia ai fini dell’usabilità che a quelli della SEO.

Ecco quindi un breve tutorial su come far sì che gli utenti possano navigare meglio il vostro sito e visualizzare URL puliti rimuovendo le estensioni dai permalink. Per farlo utilizzeremo il file .htaccess.
Molti dei principali CMS eseguono questa operazione di default, ma nel caso in cui abbiate un sito statico o il vostro CMS non disponga di questa funzione vi basterà modificare l’htaccess come segue per ottenere lo stesso risultato.

Cos’è e a cosa serve il file .htaccess

L’.htaccess è un file di testo (comodamente creabile con qualsiasi editor di testo) che contiene una serie di configurazioni lato server che influiscono su tutto il contenuto della cartella in cui viene collocato.

Per crearlo è sufficiente aprire il blocco note, inserire le regole che vi interessano e salvarlo con il nome .htaccess (non si tratta di un’estensione, è esattamente il nome del file). A questo punto potete caricarlo tramite FTP all’interno della root del vostro sito, o nella sottocartella che preferite se volete applicare le regole solo a una parte del sito.

Come rimuovere le estensioni

Per rimuovere l’estensione .html dai file HTML del sito, per esempio la pagina http://www.sitoweb.it/chi-siamo.html vi basta aggiungere il seguente codice all’interno del file .htaccess:

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

La stessa identica regola si applica a tutte le altre estensioni: è sufficiente modificare l’estensione del file nell’ultima riga. Ad esempio per i file PHP, il codice sarà il seguente:

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

Et voilà!
Rimuovere le estensioni vi permetterà anche di poter linkare le diverse pagine del sito tra loro (link building interna) senza dover ogni volta scrivere l’URL con l’estensione finale:

<a href="http://www.sitoweb.it/chi-siamo">Chi siamo</a>

Htaccess generator

Per per gli utenti principianti o per chi avesse dei dubbi sul procedimento, esiste htaccess editor, un tool online gratuito che genera in automatico il file .htaccess in base alle regole di cui avete bisogno.

Per gli utenti GoDaddy

Per chi utilizza GoDaddy come hosting, il procedimento è leggermente diverso. Occorre abilitare MultiViews nell’.htaccess per fare in modo che il rewrite degli URL funzioni correttamente.
Questo è il codice da inserire:

Options -MultiViews
RewriteEngine On
RewriteBase /

# remove .php; use THE_REQUEST to prevent infinite loops
RewriteCond %{HTTP_HOST} ^www\.miosito\.it
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

# remove index
RewriteRule (.*)index$ $1 [R=301]

# remove slash if not directory
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# add .php to access file, but don't redirect
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

Ovviamente ricordate di sostituire l’estensione (ad esempio con .html) se non usate php e di inserire l’URL del vostro sito al posto di “miosito.it”.

Considerazioni SEO

Alcuni evitano di eseguire questa operazione in quanto temono che la riscrittura degli URL possa portare a penalizzazioni da contenuti duplicati, visto che i motori di ricerca potrebbero individuare due versioni della stessa pagina (quella con l’estensione e quella senza). Di norma questo non accade, dato che è Google stesso nelle sue linee guida a consigliare l’utilizzo di URL user friendly, ma se volete essere sicuri al 100% che le vostre pagine non vengano indicizzate due volte vi basterà utilizzare il meta tag canonical nell’head della pagina per indicare al motore di ricerca il giusto URL da indicizzare:

<link rel="canonical" href="http://www.sitoweb.it/chi-siamo" />

Di Susanna Marsiglia

Blogger, content manager, SEO, web designer, a volte scrittrice analogica. Nerd repressa causa incompatibilità con la matematica. Mens sana in corpore pigro.

Commenti (7)
  1. Alessa 28 settembre 2017 at 8:24

    Ciao Susanna, sono d’accordo con gli altri. grazie di condividere cose cosi importanti. io sono alle prime armi e seguendo il tuo post caricando sul server .htaccess , comunque non vedo nascosto le estensioni .html 🙁 puoi darmi una mano perfavore con quelache esempio ?grazie 1000
    Alessa

  2. Vico 22 febbraio 2017 at 17:01

    Ottimo articolo. Finalmente qualcuno che l’ha esposto in modo chiaro e utile. Complimenti.

  3. Simonepul 9 settembre 2016 at 15:09

    Ciao susanna, ottimo articolo: non sono molti i siti web italiani che spiegano cone rimuovere le estensioni tramite .htaccess e tublo hai fatto in maniera molto semplice. Complimenti hai sicuramente aiutato tanti!

  4. Pingback: Tag canonical: come e quando utilizzarli correttamente

  5. Antonio Mecca 16 febbraio 2016 at 15:58

    Ciao Susanna, è insolito trovare una donna che scriva di SEO, il che ovviamente fa molto piacere. Aggiungerò alcuni dei tuoi script nella mia guida al file .htaccess che ho scritto un pò di tempo fà.

    Un saluto.

  6. Pingback: Come rimuovere le estensioni da un URL tramite ...

Lascia un commento

Il tuo indirizzo email non verrà pubblicato. I campi obbligatori sono segnalati *