web-dev-qa-db-fra.com

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

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 Location et Directory. 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?

31
rfgamaral

La directive Directory ne fonctionne que pour les objets du système de fichiers (par exemple/var/www/mypage, C:\www\mypage), tandis que la directive Location 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 Location si vous devez affiner les droits d'accès par une URL, et vous utiliseriez Directory si vous devez contrôler les droits d'accès à un répertoire (et ses sous-répertoires ) dans le système de fichiers.

43
ipozgaj

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!

2
Al Garrison