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

但是我似乎无法理解LocationDirectory之间的区别。我更改为以下内容,这对我来说更有意义,并且仍然有效:

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

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

我可以保留更改还是应该恢复原样?

Answers:


41

Directory指令仅适用于文件系统对象(例如/ var / www / mypage,C:\ www \ mypage),而Location指令仅适用于URL(站点域名后的部分,例如www.mypage.com/mylocation)。

用法很简单- Location如果需要通过URL调整访问权限,Directory则需要使用,如果需要控制对文件系统中的目录(及其子目录)的访问权限,则可以使用。


我仍然感到困惑...那么Zend为什么同时使用了两者?我可以保留我的更改吗?
里卡多·阿马尔

1
不,您的配置与原始配置不同-从Directory指令中删除了AllowOverride,这意味着您将无法使用C:\ Program Files \ Zend \ ZendServer \ GUI \ html目录中的.htaccess文件。目录选项设置与URL选项设置不同,这就是为什么它们同时使用了两者。
ipozgaj 2010年

1
龙书面记录在有关目录与位置(及其他)apache的文档:httpd.apache.org/docs/2.2/sections.html
丹Pritts

2

使用AJP或代理重定向时可以使用位置。例如,Oracle的PLSQL APEX模块使用以下URL:/ pls / apex / f?p = 1:1

如果尝试限制此使用目录,则它将永远无法工作,因为它是直通通道,而不是服务器上的物理目录。定位工程!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.