Différence entre les directives Apache <Location> et <Directory>

29

J'ai installé Zend Server et j'ai remarqué quelque chose comme ce qui suit a été ajouté à mon fichier httpd.conf:

<Location /ZendServer>
 Order Allow,Deny
 Allow from 127.0.0.1
</Location>

Alias /ZendServer "C:\Program Files\Zend\ZendServer\GUI\html"

<Directory "C:\Program Files\Zend\ZendServer\GUI\html">
 AllowOverride All
</Directory>

Mais je n'arrive pas à comprendre la différence entre l' emplacement et l' annuaire . J'ai changé pour quelque chose comme ce qui suit, ce qui est plus logique pour moi, et cela fonctionne toujours:

<Location /ZendServer>
 AllowOverride All
 Order Allow,Deny
 Allow from 127.0.0.1
</Location>

Alias /ZendServer "C:\Program Files\Zend\ZendServer\GUI\html"

Puis-je conserver mes modifications ou dois-je les remettre telles quelles?

Ricardo Amaral
la source

Réponses:

41

DirectoryLa directive ne fonctionne que pour les objets du système de fichiers (par exemple / var / www / mypage, C: \ www \ mypage), tandis que la Locationdirective ne fonctionne que pour les URL (la partie après le nom de domaine de votre site, par exemple www.mypage.com/mylocation).

L'utilisation est simple - vous utiliseriez Locationsi vous devez affiner les droits d'accès par une URL et vous utiliseriez Directorysi vous devez contrôler les droits d'accès à un répertoire (et ses sous-répertoires) dans le système de fichiers.

ipozgaj
la source
Je suis toujours confus ... Pourquoi Zend a-t-il utilisé les deux à l'époque? Puis-je conserver mes modifications ou quelque chose ne va pas avec ça?
Ricardo Amaral
1
Non, votre configuration n'est pas la même que celle d'origine - vous avez supprimé AllowOverride de la directive Directory, ce qui signifie que vous ne pourrez pas utiliser le fichier .htaccess dans le répertoire C: \ Program Files \ Zend \ ZendServer \ GUI \ html. La configuration des options d'annuaire est différente de la configuration des options d'URL, c'est pourquoi ils ont utilisé les deux.
ipozgaj
1
Rédaction longue dans les documents apache sur l'annuaire par rapport à l'emplacement (et autres): httpd.apache.org/docs/2.2/sections.html
Dan Pritts
2

L'emplacement peut être utilisé lors de l'utilisation d'une redirection AJP ou proxy. Par exemple, le module PLSQL APEX d'Oracle utilise l'URL suivante: / pls / apex / f? P = 1: 1

Si vous essayez de restreindre ce répertoire à l'aide, il ne fonctionnera jamais car il s'agit d'un répertoire passe-système et non d'un répertoire physique sur le serveur. L'emplacement fonctionne!

Al Garrison
la source