Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

I file .htaccess

Le modifiche necessarie da fare al webserver
Le modifiche necessarie da fare al webserver
Link copiato negli appunti

I file .htaccess consentono di effettuare modifiche alla configurazione di Apache che si applichino in maniera specifica ad una particolare directory (e alle sue subdirectory) per la quale esista una stanza di tipo <Directory> in httpd.conf.

Le direttive che si possono usare all'interno di questi file hanno, in generale, la stessa sintassi del file di configurazione principale di Apache httpd.conf, sebbene non tutte le direttive ammesse in httpd.conf possono comparire in un file .htaccess. Oltre ad alcune limitazioni generali, l'amministratore del server può limitare ulteriormente le categorie di direttive consentite, mediante la direttiva AllowOverride, oppure specificare le singole direttive consentite mediante la direttiva AllowOverrideList.

Specificando AllowOverride none e AllowOverrideList none, il supporto ai file .htaccess viene disattivato per la directory in questione.

Si consideri il seguente esempio:

<Directory/www/htdocs/example/>
AllowOverride AuthConfig Indexes
</Directory>
<Directory/www/htdocs/example2/>
AllowOverride All
</Directory>

Con questa sintassi, facciamo sì che tutte le direttive che non si trovano nei gruppi AuthConfig e Indexes, se usate in un file .htaccess posto nella directory /www/htdocs/example, causeranno un internal server error. Per la directory /www/htdocs/example2, invece, sono consentite tutte le direttive di override.

Come e quando usare i file .htaccess

In generale, bisognerebbe utilizzare i file .htaccess soltanto quando non è possibile inserire le direttive desiderate all'interno del file di configurazione principale - ad esempio, se i fornitori di contenuti hanno necessità di fornire accesso di root al sistema server e non hanno accesso con privilegi amministrativi al sistema: ciò succede molto spesso nel caso di shared hosting.

Rimane comunque preferibile centralizzare le direttive ove possibile, sia per ragioni di performance che di sicurezza.

In primis, se è concesso l'uso di file .htaccess, httpd li cercherà in ogni directory che incontrerà nel suo percorso fino alla risorsa richiesta. Per esempio, se si richiede la risorsa /www/htdocs/example, httpd cercherà i seguenti file:

/.htaccess
/www/.htaccess
/www/htdocs/.htaccess
/www/htdocs/example/.htaccess

È opportuno notare come le direttive verranno applicate precisamente nell'ordine di apertura dei file trovati. Per esempio, le direttive in /www/htdocs/example/.htaccess sovrascriveranno eventualmente quelle definite in /www/htdocs/.htaccess e via dicendo, fino ad httpd.conf.

Nel caso si faccia uso di direttive RewriteRule, che riscrivono gli URL in base ad espressioni regolari, ogni richiesta di una risorsa comporterà una loro ricompilazione, mentre la compilazione sarebbe avvenuta una sola volta se si fossero trovate all'interno di httpd.conf. Inoltre, le regole in sè possono diventare più complicate da scrivere a causa della loro limitazione a un singolo sottoalbero di directory; infatti, le regole verranno considerate come relative alla directory corrente, piuttosto che alla URL originariamente richiesta. Si considerino i seguenti esempi, tratti dalla documentazione ufficiale di Apache:

# In httpd.conf
RewriteRule "^/images/(.+)\.jpg" "/images/$1.png"
# In .htaccess nella directory root
RewriteRule "^images/(.+)\.jpg" "images/$1.png"
# In .htaccess in images/
RewriteRule "^(.+)\.jpg" "$1.png"

In un file .htaccess posto in una data directory, la slash iniziale viene rimossa dal valore fornito in RewriteRule. Se il file .htaccess è invece posto direttamente nella subdirectory images, la sequenza /images/ non può chiaramente essere presente nel pattern, e va rimossa dal risultato.

La seconda considerazione riguarda la sicurezza del server: dal momento che si concede la possibilità a terzi di alterare, per quanto in maniera localizzata, il funzionamento del server, è opportuno limitare gli override consentiti a quelli strettamente necessari, e avvertire gli utenti.

AllowOverride: Categorie di direttive ammesse

Abbiamo già visto in precedenze che se la direttiva AllowOverride viene impostata ad All, ogni direttiva sarà ammessa all'interno del file .htaccess.

Per una maggiore granularità, sono inoltre definiti i seguenti contesti:

Nome contesto Descrizione
AuthConfig Consente l'uso di direttive relative all'autorizzazione (AuthDBMGroupFile, AuthDBMUserFile, AuthGroupFile, AuthName, AuthType, AuthUserFile, Require, etc.)
FileInfo Consente l'uso di direttive relative ai tipi di documento (ErrorDocument, ForceType, LanguagePriority, SetHandler, SetInputFilter, SetOutputFilter, e le direttive Add* e Remove* del modulo mod_mime) e ai metadati (Header, RequestHeader, SetEnvIf, SetEnvIfNoCase, BrowserMatch, CookieExpires, CookieDomain, CookieStyle, CookieTracking, CookieName), nonchè delle direttive di mod_rewrite (RewriteEngine, RewriteOptions, RewriteBase, RewriteCond, RewriteRule), le direttive di mod_alias (Redirect, RedirectTemp, RedirectPermanent, RedirectMatch), ed Action da mod_actions
Indexes Consente l'uso di direttive relative all'indicizzazione della directory (AddDescription, AddIcon, AddIconByEncoding, AddIconByType, DefaultIcon, DirectoryIndex, FancyIndexing, HeaderName, IndexIgnore, IndexOptions, ReadmeName, etc.)
Limit Consente l'uso di direttive relative al controllo dell'accesso all'host (Allow, Deny e Order)
Nonfatal=[Override|Unknown|All] Modifica il comportamento del server in caso di errori di configurazione, che normalmente provocano un Internal Server Error, in modo tale che non comportino errrori fatali, ma semplici warning, che verranno registrati. In particolare:

  • Nonfatal=Override considera non fatali gli errori relativi a direttive non consentite mediante AllowOverride;
  • Nonfatal=Unknown considera non fatali gli errori relativi a direttive non riconosciute, ad esempio per errori di digitazione o perchè il modulo del server che le rende disponibili;
  • Nonfatal=All è equivalente a specificare entrambi i precedenti parametri.

Si noti che un errore sintattico in una direttiva valida causerà comunque un Internal Server Error.

È bene notare anche che la trasformazione in warning dei suddetti errori fatali può avere un impatto significativo sulla sicurezza. Per esempio, se AllowOverride non permette AuthConfig, la configurazione inserita dagli utenti per restringere l'accesso a un sito sarà disabilitata

Options[=Option,...] Consente l'uso di direttive che controllano specifiche caratteristiche della directory (Options e XBitHack). Un segno di eguaglianza seguito da una lista separata da virgole indicherà le opzioni che possono essere impostate mediante il comando Options

Ti consigliamo anche