Różnica między <Lokalizacja> a <Directory> dyrektyw Apache

29

Mam zainstalowany Zend Server i zauważyłem, że do mojego pliku httpd.conf dodano coś takiego:

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

Ale nie mogę zrozumieć różnicy między lokalizacją a katalogiem . Zmieniłem na coś takiego, co ma dla mnie większy sens i nadal działa:

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

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

Czy mogę zachować zmiany, czy powinienem przywrócić je do poprzedniego stanu?

Ricardo Amaral
źródło

Odpowiedzi:

41

Directorydyrektywa działa tylko dla obiektów systemu plików (np. / var / www / mypage, C: \ www \ mypage), podczas gdy Locationdyrektywa działa tylko dla adresów URL (część po nazwie domeny witryny, np. www.mypage.com/mylocation).

Użycie jest proste - użyłbyś tego Location, gdybyś musiał dostroić prawa dostępu według adresu URL, i użyłbyś Directory, gdybyś musiał kontrolować prawa dostępu do katalogu (i jego podkatalogów) w systemie plików.

ipozgaj
źródło
Nadal jestem zdezorientowany ... Dlaczego Zend używał ich obu wtedy? Czy mogę zachować moje zmiany, czy coś w tym jest nie tak?
Ricardo Amaral
1
Nie, twoja konfiguracja nie jest taka sama jak oryginalna - usunąłeś AllowOverride z dyrektywy Directory, a to oznacza, że ​​nie będziesz mógł używać pliku .htaccess w katalogu C: \ Program Files \ Zend \ ZendServer \ GUI \ html. Ustawienia opcji katalogu różnią się od ustawień opcji adresów URL, dlatego użyli obu z nich.
ipozgaj
1
Długie napisanie w dokumentach apache o Directory vs. Location (i innych): httpd.apache.org/docs/2.2/sections.html
Dan Pritts
2

Lokalizacji można użyć podczas korzystania z przekierowania AJP lub proxy. Na przykład moduł APS PLSQL firmy Oracle używa następującego adresu URL: / pls / apex / f? P = 1: 1

Jeśli spróbujesz ograniczyć to za pomocą katalogu, to nigdy nie zadziała, ponieważ jest to katalog przejściowy, a nie fizyczny katalog na serwerze. Lokalizacja działa!

Al Garrison
źródło