Le direttive nei file di configurazione possono essere applicate a tutto il server, oppure possono essere ristrette a particolari directory, file, host o url. Questo documento descrive come usare i contenitori delle sezioni di configurazione oppure i file .htaccess per cambiare l’ambito delle loro direttive di configurazione.
Ci sono di base due tipi di contenitori. La maggior parte di questi vengono valutati ad ogni richiesta. Le direttive incluse sono applicate solamente per quelle richieste che combaciano con i contenitori. I contenitori <IfDefine>, <IfModule>, e <IfVersion> , d’altra parte, sono valutati solamente all’avvio o riavvio del server. Se la loro condizione è vera all’avvio, allora le direttive incluse verranno applicate a tutte le richieste. Se la condizione è invece falsa allora le direttive incluse saranno ignorate.
La direttiva <IfDefine> racchiude tutte quelle direttive che verranno applicate solo se un parametro appropriato viene definito nella linea di comando httpd . Per esempio, con la seguente configurazione tutte le richieste verranno reindirizzate ad un altro sito solo se il server è stato avviato usando httpd -DClosedForNow:
<IfDefine ClosedForNow>
Redirect / http://altroserver.esempio.com/
</IfDefine>
La direttiva <IfModule> è molto simile, con l’eccezione che racchiude le direttive che verranno applicate solamente se un particolare modulo è attivo sul server. Il modulo deve poter essere compilato sia staticamente nel server, oppure dinamicamente e la sua linea LoadModule deve essere precedentemente inclusa nel file di configurazione. Questa direttiva dovrebbe essere utilizzata solamente se hai bisogno che il tuo file di configurazione funzione sia che certi moduli siano installati oppure no. Questo non deve essere usato per racchiudere istruzioni che tu vuoi funzionino sempre, perché possono eliminare le segnalazioni di errori di moduli mancanti che sono invece molto utili.
Nel seguente esempio, la direttiva MimeMagicFiles verrà applicata solamente se mod_mime_magic è disponible.
<IfModule mod_mime_magic.c>
MimeMagicFile conf/magic
</IfModule>
La direttiva <IfVersion> è molto simile all’<IfDefine> e <IfModule>, con l’eccezione che racchiude direttive che verranno applicate solamente se una particolare versione del server viene eseguita. Questo modulo è pensato infatti per essere usato negli strumenti di test e grandi reti che hanno a che fare con diverse versioni di httpd e configurazioni diverse.
<IfVersion >= 2.1>
# vero solo se la versione è
# maggiore o uguale alla 2.1.0.
</IfVersion>
<IfDefine>, <IfModule>, e la <IfVersion> possono applicare condizioni negative facendo precedere “!” al test. Anche queste sezioni possono essere annidate per ottenere restrizioni più complesse.