Apache2 的“安全”部分中的“拒绝所有”指令会停止对虚拟主机部分的访问

Apache2 的“安全”部分中的“拒绝所有”指令会停止对虚拟主机部分的访问

我的 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 allDeny from all指令,并且Order设置为allow,deny。这意味着拒绝命令始终优先于允许命令。

更改Order更具体的块中的指令应该可以解决问题。另一个选择是删除Deny from all块中的显式/;当顺序为时,allow,deny没有显式的请求将不被允许Allow

相关内容