In questo articolo vedremo cos’è e come funziona il file .htaccess di Apache, uno strumento estremamente utile e prezioso per tutti i webmaster di siti web ospitati su web server Linux.
Cos’è il file .htaccess?
Il file .htaccess è un comune file di testo che viene inserito all’interno di una specifica directory di un dato sito web al fine di fornire alcune direttive ad Apache sul modo in cui gestire quella specifica cartella e/o i file al suo interno.
Essendo un semplice file di testo non servono programmi specifici per compilarlo. Possiamo quandi utilizzare semplici editor testuali come il blocco Note di Windows o Nano o Vi di Linux.
Una cosa molto importante riguarda il nome di questo file: non deve assolutamente cambiare! Perchè funzioni correttamente il primo carattere deve essere un punto e deve essere seguito dalla stringa "htaccess". Se salvate il file come "htaccess.txt" o "htaccess.html" il file non sortirà alcun effetto!
Cosa posso fare col file .htaccess?
Grazie al file .htaccess è possibile:
- impostare la pagina di default del sito
- impostare pagine di errore personalizzate
- gestire i permessi di accesso alla cartella
- proteggere le immagini dall’hot-linking
- gestire il rewriting delle URL
- gestire redirect
Ambito di validità del file .htaccess
Il file .htaccess produrrà effetti relativamente alla cartella in cui è posizionato ed alle eventuali sotto-cartelle, agendo in modo gerarchico. Facciamo un esempio e supponiamo un albero di cartella di questo genere:
index.html
canali/
canali/sport/
canali/economia/
canali/turismo/
Ora supponiamo di aver caricato il file .htaccess nella cartella "canali". Secondo la regola esposta poco sopra, l’effetto delle direttive in esso contenute dispiegherà i propri effetti non solo su tale cartella ma anche sulle sotto-cartelle "sport", "economia" e "turismo".
Risulta evidente, da quanto appena descritto, che qualora il file .htaccess venga posizionato all’interno della root del nostro spazio web le sue impostazioni saranno valide per l’intero sito web!
E’ appena il caso di ricordare che la presenza di un eventuale file .htaccess nelle sotto-cartelle avrà l’effetto di sovrascrivere le direttive contenute nel file della directory madre.
Abilitare l’interpretazione del file .htaccess
Se ci stiamo confrontando con un hosting gestito da terzi, non dovremo fare nulla: se il supporto ad .htaccess è compreso tra le caratteristiche del servizio saremo già pronti per poter lavorare.
Qualora, invece, stessimo operando sul nostro ambiente locale oppure su un server remoto (ad esempio una VPS) gestito da noi, allora è necessario verificare che la configurazione di Apache ammetta l’override delle dirtettive centrali. Per farlo è necessario verificare che, per il dominio utilizzato, la configurazione del web-server non contenga questa direttiva:
AllowOverride None
In caso affermativo sarà necessario sostituire "None" con "All" in questo modo:
AllowOverride All
Una volta applicata la modifica sarà necessario, al fine di renderla effettiva, riavviare Apache:
sudo service apache2 restart
E’ il caso di ricercare, invece, che le modifiche ai file .htaccess non richiedono il riavvio del web-server essendo queste immediatamente operative.
Caricare il file .htaccess all’interno del nostro spazio web
Per effettuare l’upload di ul file .htaccess predisposto localmente, all’interno del nostro spazio web remoto dovremo utilizzare un comune client FTP avendo cura di specificare ASCII quale modalità di trasferimento (qualora questa fosse impostata su "binaria" il file .htaccess produrrebbe un errore).
Utilizzi comuni del file .htaccess
Impostare una pagina di default
Agendo mediante la direttiva DirectoryIndex è possibile personalizzare a piacimento il documento di default, in questo modo:
DirectoryIndex primapagina.php
Pagine di errore personalizzate
Mediante il file .htaccess è possibile definire delle pagine di errore personalizzate in modo estremamente semplice. Per farlo sarà sufficiente far ricorso alla direttiva ErrorDocument.
Grazie a questa direttiva sarà possibile specificare sia messaggi di errore personalizzati che indicare (soluzione consigliata) dei file HTML ad hoc per ciascun tipo di errore.
Se volessimo impostare dei messaggi di errore personalizzati dovremmo inserire, nel nostro file .htaccess, qualcosa del genere:
ErrorDocument 403 "Accesso negato"
ErrorDocument 404 "Pagina NON trovata"
Se invece volessimo impostare pagine di errore personalizzate scriveremo qualcosa del genere:
ErrorDocument 403 /accesso-negato.html
ErrorDocument 404 /file-non-trovato.html
Quello che abbiamo fatto in quest’ultimo esempio è impostare il percorso a dei file HTML che verranno mostrati al verificarsi dello specifico errore verificatosi.
Configurare PHP
Mediante il file .htaccess è anche possibile configurare alcune caratteristiche di PHP in modo da ottimizzare il funzionamento del linguaggio sulla base delle effettive esigenze di un dato script senza tuttavia stravolgere il resto del sito e degli applicativi in esso installati.
Le operazioni su PHP avvengono mediante le due direttive php_falg e php_value: la prima serve per impostare valori di tipo boleano (on/off), la seconda valori di altro tipo.
Vediamo degli esempi di utilizzo della direttiva php_flag in .htaccess:
php_flag display_errors on
php_flag register_global off
Seguono esempi di utilizzo della direttiva php_value:
php_value max_execution_time 300
php_value upload_max_filesize 32M
Per maggiori informazioni su queste due direttive invito il lettore a leggere questo post sul nostro blog.
Limitare gli accessi a cartelle e file
Un’altra delle funzioni tipiche del file .htaccess consiste nella limitazione degli accessi a specifiche cartelle o file. Per chi fosse interessato all’argomento suggerisco la lettura di questo mio articolo che spiega come bloccare le visite provenienti da determinati referrer o da specifici IP.
Utilizzando il file .htaccess in combinazione con .htpasswd è anche possibile impostare un sistema di autenticazione per l’accesso a specifiche cartelle o file: il funzionamento di questo meccanismo è spiegato dettagliatamente a questa pagina.
Proteggere le immagini dall’hot-linking
Grazie al file .htaccess è possibile impeedire che altri siti sfruttino la banda del nostro sito web linkando direttamente le immagini presenti all’interno del nostro spazio web. Per maggiori informazioni vi invito a leggere questo articolo.
Gestire l’URL Rewriting
Il file .htaccess viene utilizzato molto spesso per gestire le cosiddette direttive di rewriting per la riscrittura dinamica delle URL: con questa espressione s’intende quella tecnica informatica che ha la finalità di mascherare le URL, articolate e complesse, prodotte dagli script lato server (che solitamente fanno largo uso delle querystring) trasformandole in indirizzi semplici, brevi, più facili da ricordare e solitamente ben infarciti di keyword (tecnica delle URL SEO-Friendly).
Ad esempio una URL come questa
www.miosito.com/pagina.php?canale=123&contenuto=456
potrebbe essere trasformata in
www.miosito.com/123_sport/465_formula-uno.html
mediante l’utilizzo della direttiva RewriteEngine. Per chi fosse interessato a conoscere il funzionamento di questo interessante meccanismo rimando alla lettura della guida dedicata.
Gestire redirect con .htaccess
Con il file .htaccess è anche possibile gestire dei redirect per redirezionare il traffico da vecchie URL verso i nuovi indirizzi (ipotesi assai frequente nel caso di restyling del sito web). Per maggiori informazioni su come usare .htaccess per gestire un redirect invito alla lettura dell’ultima parte di questo articolo dedicato ai redirect 301.
Conclusioni
Il file .htaccess è uno strumento prezioso per tutti gli utilizzatori di hosting in ambiente Linux, tanto da essere considerata una delle caratteristiche fondamentali di ogni buon piano di hosting.
E’ bene ricordarsi, però, che il file .htaccess oltre ad essere molto potente è anche "delicato": ricordiamoci, infatti, che stiamo operando su caratteristiche avanzate ed eventuali errori di compilazione potrebbero bloccare del tutto il nostro sito web causando uno sgradevole errore 500. Prima di procedere, pertanto, è bene documentarsi e, se possibile, fare delle prove in locale.