mit*_*mit 6 security virtualhost http-authentication apache-2.2
我想允许访问在其他情况下被禁止的目录中的单个文件。
这不起作用:
<VirtualHost 10.10.10.10:80>
ServerName example.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options FollowSymLinks
AllowOverride None
order allow,deny
allow from all
</Directory>
# disallow the admin directory:
<Directory /var/www/html/admin>
order allow,deny
deny from all
</Directory>
# but allow this single file::
<Files /var/www/html/admin/allowed.php>
AuthType basic
AuthName "private area"
AuthUserFile /home/webroot/.htusers
Require user admin1
</Files>
...
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
当我访问时,http://example.com/admin/allowed.php
我收到http://example.com/admin/
目录的禁止消息,但没有从基本身份验证的浏览器登录弹出窗口,因此基本身份验证对文件不起作用。如何为 allowed.php 设置例外?
如果不可能,也许我可以在另一个 Files 指令中枚举所有禁止的文件?
假设 admin/ 还包含 user.php 和 admin.php 这应该在这个虚拟主机中被禁止。
编辑:我还尝试了以下修改,尝试遵循 Ignacio 的回答中的建议,结果相同为“禁止”:
...
# disallow the admin directory:
<Directory /var/www/html/admin>
order allow,deny
deny from all
</Directory>
# but allow this single file::
<Files /var/www/html/admin/allowed.php>
order allow,deny
allow from all
AuthType basic
AuthName "private area"
AuthUserFile /home/webroot/.htusers
Require user admin1
satisfy all
</Files>
...
Run Code Online (Sandbox Code Playgroud)
小智 13
尝试这个:
<Directory /var/www/html/admin>
<Files allowed.php>
AuthType basic
AuthName "private area"
AuthUserFile /home/webroot/.htusers
Require user admin1
</Files>
order allow,deny
deny from all
satisfy any
</Directory>
Run Code Online (Sandbox Code Playgroud)
嵌套在目录中的文件仅适用于其中,因此您的代码块更有条理地组织起来,我认为使用“满足任何”将允许它们按计划合并。我不确定它是否真的需要,所以尝试使用和不使用满足行...
归档时间: |
|
查看次数: |
16814 次 |
最近记录: |