我已经为目录 / 设置了基本身份验证,并且想要排除位置 /assets/upload,但是它就是不起作用,我已经尝试了几个选项和教程。
此 Location 指令清除目录身份验证配置并禁用整个网站的基本身份验证:
<Directory "/">
AuthType Basic
AuthName "Staging"
AuthUserFile /var/.../.htpasswd
AuthGroupFile /dev/null
Require valid-user
</Directory>
<Location "/">
Order deny,allow
Allow from all
Satisfy any
</Location>
但是,我只是希望 /assets/upload 没有基本身份验证,但如果我将 Location 的第一个参数更改为 /assets/upload,整个页面,包括 /assets/upload 是受基本身份验证保护...
<Location "/assets/upload">
Order deny,allow
Allow from all
Satisfy any
</Location>
这可能是什么问题?
版本:Apache/2.2.16(Debian)
答案1
恐怕你似乎误解了这里的一些 Apache 概念。<Directory>
块中的参数是完整的文件系统路径,而不是相对于服务器根目录的路径。你应该绝不确实改变了<Directory />
默认块。您无需更改它即可使您的配置正常工作。
<Location>
块的参数是相对于服务器根目录。因此,您只需要两个这样的块即可实现您的愿望。
<位置“/assets/upload”> 命令拒绝、允许 允许所有人 满足任何 </位置> <位置“/”> AuthType 基本版 AuthName“暂存” 验证用户文件 /var/.../.htpasswd AuthGroup文件 /dev/null 需要有效用户 </位置>
您应该在全局/服务器上下文中有一个<Directory />
块(即不在任何虚拟主机内),它应该是这样的。
<目录 /> 选项 FollowSymLinks AllowOverride 无 命令允许、拒绝 全部拒绝 </目录>
答案2
在 /assets/upload 目录中,放置另一个包含以下内容的 .htaccess 文件;
Allow from all
Satisfy any
这将覆盖其上方目录中文件的更通用设置,并且在不需要授权的情况下提供资产。