File .htaccess: cos’è e come modificarlo

Gestisci il tuo sito come un vero maestro

Benvenuti al nostro tutorial sul file .htaccess! .htaccess è un piccolo ma potente semplice file di testo che puoi utilizzare per cambiare la configurazione da Apache su una base per-directory. Funge da tramite tra te e il web server Apache.

Impara a modificare il file .htaccess e avrai il potere di indirizzare gli utenti sulla giusta pagina, aggirare gli hacker e apportare degli aggiustamenti per migliorare le performance del tuo sito.

Modificando il file .htaccess, puoi apportare dei cambiamenti al comportamento del tuo sito che altrimenti richiederebbero un più alto livello di accesso di quello che il tuo account di hosting può offrire normalmente.

Questo tutorial sul file .htaccess ti spiegherà come sfruttare la potenza di .htaccess per portare a termine diverse funzioni. Alcune delle mirabilie che possiede includono:

  • Reindirizzamento URL e riscrittura – assicurati che i tuoi utenti vadano esattamente dove tu desideri.
  • Sicurezza – limita gli accessi a tipi particolari di file o directory o blocca accessi non desiderati al tuo sito.
  • Ottimizzazione del sito – Metti a punto degli aggiustamenti che migliorano le sue performance.

Trovare il file .htaccess

Un file .htaccess si trova molto spesso nella root del sito che controlla. Da qui avrà influenza su tutte le sottocartelle del sito.

Puoi comunque mettere un file .htaccess in una particolare sottocartella posta più in profondità nella struttura del tuo sito. È una cosa molto utile se vuoi operare soltanto su una piccola porzione del tuo sito, in quanto il file avrà influenza solo sulla directory nella quale si trova e in quelle al di sotto.

È possibile avere più di un file .htaccess nel sito, anche se per una più semplice manutenzione i webmaster ne usano soltanto uno collocato nella root del sito in modo da apportare le modifiche necessarie.

Configurare .htaccess dal cPanel

Ogni editor di testo può essere utilizzato per modificare il file .htaccess, compreso quello che si trova nel File Manager di cPanel. È un modo molto valido per editare il file .htaccess.

  1. Fai log-in in cPanel
  2. Nella sezione File, clicca sull’icona File Manager.

File htaccess: come modificarlo

  1. Nella finestra di pop-up, seleziona la Document Root per il sito sul quale stai lavorando e assicurati di aver attivato l’opzione “mostra file nascosti“. Nota che alcune versioni di File Manager potrebbero avere un’interfaccia leggermente diversa sebbene richiedano lo stesso tipo di settaggi. Se la finestra sotto non si apre automaticamente quando clicchi su File Manager, dai uno sguardo all’icona Setting e cliccaci sopra per accedere ai settaggi.

File htaccess: selezionare directory

  1. Cerca il file .htaccess e fai click col tasto destro col mouse. Nel menù che compare sotto seleziona “Edit” o “Modifica”.
  2. Ora ti troverai nel text editor, dove potrai apportare modifiche e salvarle.

Non dimenticare di creare un backup.

Se fai qualche errore col tuo file .htaccess rischi di mandare in tilt il tuo sito, quindi assicurati di aver creato un backup prima di procedere. Se il tuo sito va in crash e non hai fatto un backup non c’è comunque nulla da temere. Sarà infatti sufficiente rinominare il file .htaccess in .htacces.old e tutto dovrebbe tornare come prima.

Perché c’è un punto prima del nome del file?

Il punto all’inizio del nome del file .htaccess ordina ai sistemi Unix/Linux di nasconderlo, perciò quando entri nel file manager assicurati di aver messo la spunta nella casella “mostra file nascosti” o non riuscirai a visualizzarlo.

Far funzionare il file .htaccess: reindirizzamento URL e riscrittura

A volte sarà necessario reindirizzare gli utenti su una pagina diversa da quella che hanno aperto dal loro browser. Capita che quella tale pagina possa non esistere più o magari vuoi semplicemente reindirizzarli da una URL non-WWW a una URL con WWW. Ecco quindi che il reindirizzamento e la riscrittura vengono in soccorso.

Fai attenzione: tutti questi esempi iniziano con il comando RewriteEngine on. Devi utilizzarlo solamente una volta e poi si applicherà automaticamente nel file a meno che tu non lo disattivi.

Forza il WWW o il non-WWW usando il file .htaccess

Per una ottimizzazione per i motori di ricerca, è spesso raccomandato di restare assolutamente su una versione WWW o non-WWW del tuo sito, per migliorare le performance del tuo sito nei motori di ricerca. Per fare ciò, aggiungi le seguenti stringhe di comando (assicurati di sostituire la dicitura “example.com” col nome del tuo sito):

#Force WWW

RewriteEngine on

RewriteCond %{HTTP_HOST} ^esempio.com [NC]

RewriteRule ^(.*)$ http://www.esempio.com/$1 [L,R=301,NC]

Forza HTTPS

Usa questa stringa per reindirizzare una URL non-HTTPS su una HTTPS:

#Force WWW

RewriteEngine on

RewriteCond %{HTTP_HOST} ^esempio.com [NC]

RewriteRule ^(.*)$ http://www.esempio.com/$1 [L,R=301,NC]

Forza la barra finale alla fine dell’URL

Usa questo codice per reindirizzare una URL che non contiene lo slash finale (cioè la barra finale, detta in inglese “trailing slash”) sulla stessa URL con barra finale (ad esempio: http://imiodominio.com/prodotti su http://imiodominio.com/prodotti/ ):

RewriteEngine on

RewriteCond %{REQUEST_URI} /+[^\.]+$

RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

Rimuovi la barra finale

Per rimuovere lo slash finale usa questo codice:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)/$ /$1 [R=301,L]

Reindirizza una singola pagina

Per reindirizzare automaticamente una singola URL su una differente:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)/$ /$1 [R=301,L]

Reindirizza l’intero sito su un nuovo dominio

Se stai spostando il tuo sito su un nuovo dominio, sebbene tutti i link rimangano inalterati, puoi fare il redirect di dominio con .htaccess facendo questo al tuo vecchio dominio:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^vecchiodominio.com

RewriteRule ^(.*) http://nuovodominio.com/$1 [P]

Alias per URL “pulite”

Aggiungi queste stringhe se vuoi usare delle URL ‘pulite’ – es. http://example.com/articoli invece di http://example.com/articoli.php (modifica la dicitura .php con l’estensione che vuoi rimuovere)

RewriteEngine on

RewriteCond %{SCRIPT_FILENAME} !-d

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

Migliorare la sicurezza utilizzando .htaccess

.htaccess può essere usato per proteggere singoli file o intere directory impedendo interamente l’accesso o richiedendo l’inserimento di una password. Puoi anche provare a fermare questi subdoli “hotlinkers” e farli desistere dall’utilizzare la tua larghezza di banda.

Proteggere un singolo file con una password

Per proteggere un singolo file con una password in una cartella pubblica, prima di tutto devi creare un file .htpasswd che contenga username e password criptata per consentire il login.

Una delle vie più semplici per farlo è usare uno strumento per webmaster gratuito come 4WebHelp. Una volta salvato il file .htpasswd nel tuo sistema, potrai utilizzarlo assieme a quello .htaccess. Ecco la procedura completa:

  1. Usa uno strumento per webmaster per creare una combo username:encrypted_password. La stringa prodotta sarà qualcosa di simile: User_Name:14fcYjcLcsbMU.
    Copiala e salvala su un editor di testo.
  2. Fai il login su cPanel e sotto la sezione File, clicca su File Manager.
    Configurare htaccess
  3. Nella finestra di pop-up, seleziona la Home Directory e assicurati che vi sia la spunta su “mostra file nascosti”. È qui che inserirai il file .htpasswd. Questo è un posto nascosto al pubblico e non è possibile accedervi via URL, quindi è ancora più sicuro.
  4. Ora ti trovi nella Home directory. Clicca sul link +FILE nell’angolo sinistro in alto per creare un nuovo file. Nella finestra di pop-up, inserisci .htpasswd come nome file e clicca su “Crea Nuovo File”. Lascia la seconda linea bianca. Ti rimanderà alla home directory corrente.
  5. Una lista di directory comparirà nella tua home directory. Prendi nota del path mostrato nella parte sinistra del pannello del file manager in quanto ne avrai bisogno più tardi. Sarà qualcosa come /home/username. Scendi giù finché non trovi il file che hai appena creato e cliccaci sopra con il tasto destro del mouse. (Se non vedi alcun file che comincia con un punto, probabilmente non hai messo la spunta su “mostra file nascosti” – puoi correggere questo problema cliccando sull’icona dei “Settings” e abilitando l’opzione da là.)
  6. Si aprirà il file editor. Incolla la stringa che hai salvato dallo strumento per criptare password nel nuovo file e salva. Ora potrai accedere alle modifiche del file .htaccess.
  7. Aggiungi quanto segue al tuo file .htaccess utilizzando la procedura descritta all’inizio di questo articolo. Rimpiazza /home/username con il path che hai annotato poco fa. Sostituisci mypage.html col nome della pagina che vuoi sia protetta da una password. Puoi anche cambiare “Login Richiesto” con qualcosa di diverso, come ad esempio “Area Riservata” e questo verrà mostrato nella schermata di log-in.
AuthUserFile /home/username/.htpasswd

AuthName "Login Richiesto"

AuthType basic

<Files mypage.html>

Require valid-user

</Files>
  1. Clicca su Salva Modifiche. Ora visita il tuo sito e prova ad accedere al file per verificare se la protezione inserita funziona effettivamente. Se visiti la pagina una seconda volta potresti non essere reindirizzato al login in quanto il tuo browser probabilmente la ricorderà.

Correlati: Come usare Bing Webmaster Tools per migliorare la SEO del tuo sito

Proteggi una directory con una password

La procedura per proteggere con una password un’intera directory è simile a quella per proteggere un singolo file:

  1. Crea un file .htpasswd come descritto sopra e procedi fino al punto 6, prima di fare qualsiasi modifica al file .htaccess.
  2. Crea un nuovo file .htaccess all’interno della sottocartella che vuoi proteggere e aggiungi le seguenti stringhe di comando:
AuthUserFile /home/username/.htpasswd

AuthName "Login Richiesto"

AuthType basic

Require valid-user

Nota: puoi anche proteggere una directory via cPanel, senza utilizzare .htaccess.

Proibisci l’accesso a un singolo file

Per far in modo che gli utenti non possano accedere a un determinato file, aggiungi le seguenti stringhe, rimpiazzando la dicitura “filename” col nome del file che vuoi proteggere.

<files filename>

order allow,deny

deny from all

</files>

Proibisci l’accesso ai file nascosti e alle cartelle

Utilizza questo sistema per proteggerti dagli hacker che cercheranno di accedere ai file nascosti dalla directory, cioè quelli che cominciano con un punto.

Queste stringhe rimanderanno all’hacker un messaggio di errore di tipo 404 più che un accesso negato, di conseguenza l’hacker non riuscirà a capirne il motivo.

RedirectMatch 404 /\..*$

Blocca l’hotlinking di immagini

Impedisci alle persone di rubarti la tua larghezza di banda linkando alle tue immagini aggiungendo quanto segue:

RewriteEngine onRewriteCond %{HTTP_REFERER} !^$RewriteCond %{HTTP_REFERER} !^http(s)?://(www\.)?iltuodominio.com [NC]RewriteRule \.(jpg|jpeg|png|gif)$ - [NC,F,L]

Puoi anche modificare quanto sopra per mostrate un’immagine diversa rispetto a quella “hotlinked”, generalmente una con scritto sopra “Nessun hotlinking permesso!” Per farlo, cambia l’ultima stringa con questa.

RewriteRule \.(jpg|jpeg|png|gif)$ http://www.iltuodominio.com/nessun-hotlinking.jpg [R,L]

Ottimizzazione del sito attraverso .htaccess

Il passo successivo nel nostro tutorial sul file .htaccess è quello di utilizzare .htaccess per migliorare le performance del sito. Con questa procedura, potrai abilitare la compressione dei file ed esercitare un controllo parziale sul caching, con un sostanziale miglioramento della velocità nel caricamento del sito.

Comprimi i file di testo utilizzando gzip/deflate

Il modulo Apache mod_deflate può comprimere dati utilizzando la compressione gzip prima di trasmetterli all’utente. Ciò può ridurre la larghezza di banda utilizzata dal sito, sebbene ciò non significhi di per sé che il tuo sito andrà più veloce. Il modulo è già attivo sulla maggior parte dei server, ma dovrai comunque aggiungere la stringa sottostante per usarlo a tutti gli effetti:

AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript

Sistema i titoli scaduti

La memorizzazione nella cache del browser migliora significativamente la velocità del tuo sito. Per trarre il massimo vantaggio da ciò, devi settare una data di scadenza per ogni tipo di file che intendi sottoporre a memorizzazione. Utilizza il codice sottostante come punto di partenza. Potrai impostare la durata della cache per ogni oggetto utilizzando l’unità di tempo standard, che comprende anni, mesi, settimane, giorni, ore, minuti e secondi.

ExpiresActive On

ExpiresByType image/jpg "access plus 1 year"

ExpiresByType image/jpeg "access plus 1 year"

ExpiresByType image/gif "access plus 1 year"

ExpiresByType image/png "access plus 1 year"

ExpiresByType text/css "access plus 1 month"

ExpiresByType application/pdf "access plus 1 month"

ExpiresByType text/x-javascript "access plus 1 month"

ExpiresByType application/x-shockwave-flash "access plus 1 month"

ExpiresByType image/x-icon "access plus 1 year"

ExpiresDefault "access plus 2 days"

Limita la dimensione di upload dei file

Per far sì che gli utenti non carichino file enormi, limitane la dimensione utilizzando .htaccess. Inserisci quindi la dimensione massima espressa in bytes.

LimitRequestBody 1048576

Varie ed eventuali

Ecco alcune altre cose utili che puoi fare con .htaccess:

Cambia la default index page

Di default, il server proverà a mostrare index.htm, poi index.html, poi index.php, e infine default.htm come prima pagina del tuo sito. Puoi intervenire settando una default index page inserendo la stringa sottostante (rimpiazza first.html con la pagina del tuo sito che vuoi mostrare):

#Set default index page

DirectoryIndex first.html

Puoi inserire un’intera lista qui, che il server scorrerà in modo ordinato finché non troverà una pagina che può presentare.

#Set default index pages

DirectoryIndex index.php index.htm index.html home.html

Messaggi di errore personalizzati e pagine

È molto semplice cambiare i messaggi di errore utilizzando il comando ErrorDocument. Puoi specificare un messaggio in particolare o reindirizzare a un altro file. La stringa sotto ti consentirà di mostrare una pagina con codice di errore 404.html, quando l’utente sarà dinanzi all’errore “pagina non trovata”:

ErrorDocument 404 /404.html

Puoi anche utilizzare direttamente il testo, in questo modo (nota che il messaggio vero e proprio è messo tra virgolette):

ErrorDocument 404 "Ops, questa pagina non è stata trovata. Abbiamo preso nota dell'errore e proveremo a risolverlo."

Puoi anche inserire delle stringhe per altri codici di errore del server. Ecco alcuni altri esempi:

ErrorDocument 403 "Ci dispiace, non hai il permesso per accedere”

ErrorDocument 404 /404.php

ErrorDocument 500 "Oops! Il nostro server ha riscontrato un errore. Riprova più tardi."

Questa è solamente la punta dell’iceberg chiamato .htaccess.

.htaccess offre un potente ed efficace modo per interagire con Apache, ma alcune modifiche possono ugualmente essere messe a punto attraverso l’interfaccia cPanel. È solo una questione di preferenze.

Divertiti e ricorda di fare un backup del tuo file .htaccess originale per sicurezza.

 

Immagine di copertina:  Stanley Dai su Unsplash