Les sections <Directory>/<DirectoryMatch> et <Location>/<LocationMatch> regroupent des directives qui s'appliquent à un emplacement précisé et à ses descendants, sous-répertoires et fichiers.
Les sections sont traitées selon l'ordre d'apparition dans le fichier de configuration.
L'argument peut contenir des caractères génériques :
<Directory chemin_répertoire> ... </Directory>
<Location url> ... </Location>
<Files filename> ... </Files>
<(DirectoryMatch|LocationMatch|FilesMatch) regex> ... <(/DirectoryMatch|LocationMatch|FilesMatch)>
Comme les sections Directory, Location ou FilesMatch
Les directives d'une section <Directory> ne s'appliqueront pas aux fichiers du même répertoire si on y a accédé autrement, par exemple via un lien symbolique.
<Directory "/usr/local/httpd/htdocs"> Options Indexes FollowSymLinks </Directory>
Pour éviter un accès à tout le système de fichiers sans restriction, ajouter un bloc du style
<Directory "/"> Require all denied </Directory>
et affiner la configuration pour les répertoires à rendre accessibles.
<Location "/private1"> # ... </Location>
Sans slash de fin, les directives de la section s'appliquent à /private1, /private1/ et /private1/file.txt, mais pas à /private1other
<Location "/private2/"> # ... </Location>
Avec un slash de fin, les directives de la section s'appliquent à /private2/ et à /private2/file.txt, mais pas à /private2other
<Location “/”> est un cas particulier qui s'applique à l'ensemble du serveur.
<Files "cat.html"> # Insérez ici des directives qui s'appliquent à cat.html </Files>
<Files "?at.*"> # S'applique à cat.html, bat.html, hat.php etc. </Files>
<DirectoryMatch "^/www/(.+/)?[0-9]{3}/"> # ... </DirectoryMatch>
pour les sous-répertoires de /www/ dont le nom se compose de trois chiffres.
<LocationMatch "/(extra|special)/data"> # ... </LocationMatch>
Définit les fonctionnalités disponibles pour un répertoire particulier
Options [+|-]option [[+|-]option] ...
Options FollowSymlinks
Par exemple,
sans aucun symbole + et - :
<Directory "/web/docs"> Options Indexes FollowSymLinks </Directory> <Directory "/web/docs/spec"> Options Includes </Directory>
Ici, seule l'option Includes sera prise en compte pour le répertoire /web/docs/spec.
Par contre, si la seconde directive Options utilise les symboles + et - :
<Directory "/web/docs"> Options Indexes FollowSymLinks </Directory> <Directory "/web/docs/spec"> Options +Includes -Indexes </Directory>
alors, les options FollowSymLinks et Includes seront prises en compte pour le répertoire /web/docs/spec.
AllowOverride All|None|directive-type [directive-type] ...
AllowOverride None
Autorise ou non l'utilisation des fichiers .htaccess.
Il est préférable de les désactiver (par défaut)
Pour les réactiver :
AllowOverride All
Require all remplace les anciennes directives Order Allow from all et Deny from all désormais obsolètes.
Require all (granted|denied)
Exemples :
Require all granted
autorise l'accès à ce répertoire
Require all denied
interdit l'accès à ce répertoire
Localise l'interpréteur des scripts CGI
CGIMapExtension chemin CGI .extension
Cette directive localise pour le serveur Apache trouve l'interpréteur servant à exécuter les scripts CGI.
Par exemple, avec la définition
CGIMapExtension sys:\foo.nlm .foo
tous les fichiers scripts CGI possédant une extension .foo seront passés à l'interpréteur foo.
Adresse e-mail inclue par le serveur dans ses messages d'erreur au client.
ServerAdmin email-address|URL
Il est souvent mieux de dédier une adresse pour cela, comme :
ServerAdmin www-admin@foo.example.com
Cette directive définit le répertoire à partir duquel httpd va servir les fichiers.
C'est la racine principale de l'arborescence des documents visible depuis Internet.
DocumentRoot chemin_répertoire
Exemple :
DocumentRoot "/usr/web"
un accès à http://my.example.com/index.html se réfère alors à /usr/web/index.html.
Nom d'hôte et port que le serveur utilise pour s'identifier
ServerName [protocole://]nom-de-domaine|adresse-ip[:port]
ServerName (éventuellement conjointement avec ServerAlias) identifie de manière unique un hôte virtuel basé sur le nom.
Si vous utilisez des hôtes virtuels basés sur le nom, ServerName dans une section <VirtualHost> spécifie quel Hostname doit apparaître dans l'en-tête Host: de la requête pour correspondre à cet hôte virtuel.
La directive ServerAlias définit les noms alternatifs pour un hôte, à utiliser avec des hôtes virtuels. Peut peut inclure des caractères génériques.
ServerAlias hostname [hostname] ...
<VirtualHost *:80> ServerName server.example.com ServerAlias server server2.example.com server2 ServerAlias *.example.com UseCanonicalName Off # ... </VirtualHost>
Les hôtes virtuels basés sur <virtualhost> sont traités dans l'ordre où ils apparaissent dans la configuration.
Le premier ServerName ou ServerAlias correspondant est utilisé.
Chemin-URL pour un hôte virtuel accédé par un navigateur incompatible.
Syntaxe :
ServerPath URL-path
Contexte : virtual host
<VirtualHost> ... </VirtualHost>
groupe des directives qui s'appliquent uniquement à un hôte virtuel particulier.
Lorsque le serveur reçoit une requête pour un document sur un hôte virtuel, il utilise les directives incluses dans la section <VirtualHost>
Syntaxe :
<VirtualHost addr[:port] [addr[:port]] ...> ... </VirtualHost>
<VirtualHost 10.1.2.3:80> UseCanonicalName Off ServerAdmin webmaster@host.example.com ServerName server.example.com ServerAlias www.server.example.com server server2.example.com server2 ServerAlias *.example.com DocumentRoot "/www/docs/host.example.com" ErrorLog "logs/host.example.com-error_log" TransferLog "logs/host.example.com-access_log" </VirtualHost>
Chaque hôte virtuel doit correspondre à un nom d'hôte différent pour le serveur.
ServerName hostname
ServerAlias hostname [hostname] ...
DocumentRoot directory-path
DocumentRoot "/usr/web"
Un accès à http://my.example.com/index.html → /usr/web/index.html
Require all denied