Unterschied zwischen den Apache-Anweisungen <Location> und <Directory>

29

Ich habe Zend Server installiert und festgestellt, dass meiner httpd.conf-Datei Folgendes hinzugefügt wurde:

<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>

Aber ich kann den Unterschied zwischen Standort und Verzeichnis scheinbar nicht verstehen . Ich habe zu etwas wie dem Folgenden gewechselt, was für mich sinnvoller ist und es funktioniert immer noch:

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

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

Kann ich meine Änderungen behalten oder sollte ich sie so zurücksetzen, wie sie waren?

Ricardo Amaral
quelle

Antworten:

41

DirectoryDie Direktive funktioniert nur für Dateisystemobjekte (z. B. / var / www / mypage, C: \ www \ mypage), während die LocationDirektive nur für URLs (der Teil nach dem Domainnamen Ihrer Site, z. B. www.mypage.com/mylocation) funktioniert.

Die Verwendung ist unkompliziert - Sie können dies verwenden, Locationwenn Sie die Zugriffsrechte über eine URL optimieren müssen, und Sie können dies verwenden, Directorywenn Sie die Zugriffsrechte für ein Verzeichnis (und dessen Unterverzeichnisse) im Dateisystem steuern müssen.

ipozgaj
quelle
Ich bin immer noch verwirrt ... Warum hat Zend dann beide benutzt? Kann ich meine Änderungen behalten oder stimmt etwas nicht?
Ricardo Amaral
1
Nein, Ihre Konfiguration ist nicht dieselbe wie die ursprüngliche - Sie haben AllowOverride aus der Directory-Direktive entfernt und das bedeutet, dass Sie die .htaccess-Datei nicht im Verzeichnis C: \ Programme \ Zend \ ZendServer \ GUI \ html verwenden können. Das Setup der Verzeichnisoptionen unterscheidet sich vom Setup der URL-Optionen. Deshalb haben sie beide verwendet.
ipozgaj
1
Langer Artikel in den Apache-Dokumenten über Directory vs. Location (und andere): httpd.apache.org/docs/2.2/sections.html
Dan Pritts
2

Der Speicherort kann bei Verwendung einer AJP- oder Proxy-Umleitung verwendet werden. Das PLSQL APEX-Modul von Oracle verwendet beispielsweise die folgende URL: / pls / apex / f? P = 1: 1

Wenn Sie versuchen, dieses Verzeichnis einzuschränken, funktioniert es nie, da es sich um ein Durchgangsverzeichnis und nicht um ein physisches Verzeichnis auf dem Server handelt. Standort funktioniert!

Al Garrison
quelle