Differenza tra le direttive <Location> e <Directory> Apache


29

Ho installato Zend Server e ho notato che qualcosa di simile al seguente è stato aggiunto al mio file 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>

Ma non riesco a capire la differenza tra Posizione e Directory . Ho cambiato qualcosa come il seguente, che ha più senso per me e funziona ancora:

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

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

Posso mantenere le mie modifiche o devo rimetterle com'erano?

Risposte:


41

Directorydirettiva funziona solo per gli oggetti del filesystem (ad es. / var / www / mypage, C: \ www \ mypage), mentre la Locationdirettiva funziona solo per gli URL (la parte dopo il nome del dominio del tuo sito, ad es. www.mypage.com/mylocation).

L'utilizzo è semplice: useresti Locationse dovessi mettere a punto i diritti di accesso tramite un URL e useresti Directoryse dovessi controllare i diritti di accesso a una directory (e alle sue sottodirectory) nel filesystem.


Sono ancora confuso ... Perché Zend ha usato entrambi allora? Posso mantenere le mie modifiche o c'è qualcosa che non va?
Ricardo Amaral,

1
No, la tua configurazione non è la stessa di quella originale: hai rimosso AllowOverride dalla direttiva Directory e ciò significa che non sarai in grado di utilizzare il file .htaccess nella directory C: \ Programmi \ Zend \ ZendServer \ GUI \ html. La configurazione delle opzioni della directory è diversa dalla configurazione delle opzioni dell'URL, ecco perché li hanno usati entrambi.
ipozgaj,

1
Long writeup nei documenti apache su Directory vs. Location (e altri): httpd.apache.org/docs/2.2/sections.html
Dan Pritts

2

La posizione può essere utilizzata quando si utilizza un AJP o un reindirizzamento proxy. Ad esempio, il modulo APEX PLSQL di Oracle utilizza il seguente URL: / pls / apex / f? P = 1: 1

Se si tenta di limitare questa utilizzando la directory, non funzionerà mai poiché è una directory pass-through e non fisica sul server. La posizione funziona!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.