Різниця між директивами <Location> і <Directory> Apache


29

У мене встановлений Zend Server і помітив щось подібне до мого файлу 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>

Але я, здається, не розумію різниці між місцеположенням та каталогом . Я змінив щось на зразок наступного, що має для мене більше сенсу, і воно все ще працює:

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

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

Чи можу я втримати зміни чи повернути їх такими, якими вони були?

Відповіді:


41

DirectoryДиректива працює лише для об'єктів файлової системи (наприклад, / var / www / mypage, C: \ www \ mypage), тоді як Locationдиректива працює лише для URL-адрес (частина після доменного імені вашого сайту, наприклад, www.mypage.com/mylocation).

Використання просте - ви б використовували, Locationякщо вам потрібно буде точно налаштувати права доступу за URL-адресою, і ви використовували б, Directoryякщо вам потрібно контролювати права доступу до каталогу (та його підкаталогів) у файловій системі.


Я все ще плутаюсь ... Чому тоді Зенд використовував обидва? Чи можу я втримати зміни або щось із цим не так?
Рікардо Амарал

1
Ні, ваша конфігурація не така, як оригінальна - ви видалили AllowOverride з директиви Directory, а це означає, що ви не зможете використовувати .htaccess файл у каталозі C: ​​\ Program Files \ Zend \ ZendServer \ GUI \ html. Налаштування параметрів каталогів відрізняється від налаштування параметрів URL, тому вони використовували обидва.
ipozgaj

1
Довга запис у документах apache про Директорію проти Місцеположення (та інші): httpd.apache.org/docs/2.2/sections.html
Dan Pritts

2

Місце розташування може використовуватися при використанні переадресації AJP або проксі. Наприклад, PLSQL APEX-модуль Oracle використовує таку URL-адресу: / pls / apex / f? P = 1: 1

Якщо ви спробуєте обмежити це за допомогою каталогу, він ніколи не працюватиме, оскільки це пропускний код, а не фізичний каталог на сервері. Місцезнаходження працює!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.