我的 agache2.conf 文件中有以下两个部分。
<Directory />
Options FollowSymLinks +Indexes
AllowOverride None
Order allow,deny
Deny from all
</Directory>
和
<VirtualHost *:80>
DocumentRoot "/home/bernie/development/public2"
ServerName myfl2.local
<Directory /home/aaaa/development/public2>
AllowOverride None
#Options FollowSymLinks +Indexes
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
存在以下文件及其部分内容:
/home/bernie/development/public2/a/a/index.html
出于某种原因,尝试访问
myfl2.local/a/a/index.html
我收到“403 Forbidden”错误。我已将问题缩小到上面第一个目录部分中的“Deny from all”行,但我不知道如何保留该行(因为这是一个非常重要的指令)并允许访问 public2/a/a 目录。有人知道如何修复它吗?
答案1
我能想到两个选项。一个是创建一个单独的目录指令。另一个是执行以下操作:
目录指令上方:
SetEnvIf Request_URI "/public2/a/a/*" publicaccess
在目录指令中:
Allow from env=publicaccess
不过,我很好奇:仅仅拒绝全部的目录有什么意义呢?
答案2
Order
这里的关键是设置。目录/home/aaaa/development/public2
同时关联了Allow from all
和Deny from all
指令,并且Order
设置为allow,deny
。这意味着拒绝命令始终优先于允许命令。
更改Order
更具体的块中的指令应该可以解决问题。另一个选择是删除Deny from all
块中的显式/
;当顺序为时,allow,deny
没有显式的请求将不被允许Allow
。