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
Rimane comunque preferibile centralizzare le direttive ove possibile, sia per ragioni di performance che di sicurezza.
.htaccess/www/htdocs/example
/.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
/www/htdocs/.htaccess
httpd.conf
Nel caso si faccia uso di direttive RewriteRule
httpd.conf
# 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
RewriteRule
.htaccess
images
/images/
La seconda considerazione riguarda la sicurezza
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
Add*
Remove*
mod_mime
Header
RequestHeader
SetEnvIf
SetEnvIfNoCase
BrowserMatch
CookieExpires
CookieDomain
CookieStyle
CookieTracking
CookieName
mod_rewrite
RewriteEngine
RewriteOptions
RewriteBase
RewriteCond
RewriteRule
mod_alias
Redirect
RedirectTemp
RedirectPermanent
RedirectMatch
Action
mod_actions
|
Indexes
|
Consente l'uso di direttive relative all'indicizzazione della directory (AddDescription
AddIcon
AddIconByEncoding
AddIconByType
DefaultIcon
DirectoryIndex
FancyIndexing
HeaderName
IndexIgnore
IndexOptions
ReadmeName
|
Limit
|
Consente l'uso di direttive relative al controllo dell'accesso all'host (Allow
Deny
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:
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 |
Options[=Option
|
Consente l'uso di direttive che controllano specifiche caratteristiche della directory (Options
XBitHack
Options
|