Diferença entre diretivas <Location> e <Directory> Apache


29

Eu tenho o Zend Server instalado e notei que algo como o seguinte foi adicionado ao meu arquivo 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>

Mas não consigo entender a diferença entre local e diretório . Mudei para algo como o seguinte, o que faz mais sentido para mim e ainda funciona:

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

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

Posso manter minhas alterações ou devo colocá-las de volta do jeito que estavam?

Respostas:


41

DirectoryA diretiva funciona apenas para objetos do sistema de arquivos (por exemplo, / var / www / mypage, C: \ www \ mypage), enquanto a Locationdiretiva funciona apenas para URLs (a parte após o nome do domínio do site, por exemplo, www.mypage.com/mylocation).

O uso é direto - você usaria Locationse precisar ajustar os direitos de acesso por uma URL e usaria Directoryse precisar controlar os direitos de acesso a um diretório (e seus subdiretórios) no sistema de arquivos.


Eu ainda estou confuso ... Por que Zend usou os dois então? Posso manter minhas alterações ou há algo errado com isso?
— Ricardo Amaral

1
Não, sua configuração não é a mesma que a original - você removeu o AllowOverride da diretiva Directory e isso significa que não poderá usar o arquivo .htaccess no diretório C: \ Arquivos de Programas \ Zend \ ZendServer \ GUI \ html. A configuração das opções de diretório é diferente da configuração das opções de URL; é por isso que eles usaram os dois.
— ipozgaj

1
Longo writeup na documentação do Apache sobre Diretório vs. Local (e outros): httpd.apache.org/docs/2.2/sections.html
— Dan Pritts

2

O local pode ser usado ao usar um AJP ou redirecionamento de proxy. Por exemplo, o módulo PLSQL APEX da Oracle usa o seguinte URL: / pls / apex / f? P = 1: 1

Se você tentar restringir isso usando o diretório, ele nunca funcionará, pois é um diretório de passagem e não físico no servidor. Localização funciona!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.