web-dev-qa-db-fra.com

Quel est le but de <Directory /> avec un <VirtualHost> local

<VirtualHost *:80>
    DocumentRoot /var/www
    <Directory />
    </Directory>
</VirtualHost>

La balise <Directory> fait-elle référence à /var/www sur le serveur ou à /?

Quel serait le but d'avoir une configuration / sur un VirtualHost?

1
00500005

Apache applique les configurations de répertoires à une requête du plus petit au plus grand. En substance, la section <Directory /> spécifie les paramètres par défaut de l'hôte virtuel; puisque tous les autres répertoires possibles auront cette partie dans son chemin.

Si plusieurs sections (expression non régulière) correspondent au répertoire (ou à l'un de ses parents) contenant un document, les directives sont alors appliquées dans l'ordre des correspondances les plus courtes, entrecoupées des directives des fichiers .htaccess. Par exemple, avec

<Directory />
  AllowOverride None
</Directory>

<Directory "/home">
  AllowOverride FileInfo 
</Directory>

pour accéder au document /home/web/dir/doc.html, les étapes sont les suivantes:

  • Appliquer la directive AllowOverride None (en désactivant les fichiers .htaccess).
  • Appliquez la directive AllowOverride FileInfo (pour le répertoire/home).
  • Appliquez les directives FileInfo dans /home/.htaccess, /home/web/.htaccess et /home/web/dir/.htaccess dans cet ordre.

BTW, dans l'exemple ci-dessus, <Directory /home/web> aurait fonctionné exactement de la même manière. La raison pour laquelle on ne l'utilise généralement pas est que cela rendrait un peu plus difficile le déplacement de votre site vers un nouveau répertoire. Il est plus facile d’utiliser <Directory /> car cela fonctionnera peu importe l’emplacement de la racine du site.

Il y a une explication complète sur le site Apache: http://httpd.Apache.org/docs/current/mod/core.html#directory

2
krowe