我的文件中有以下内容httpd.conf
:
<Directory "/www">
Options Indexes FollowSymLinks
AllowOverride AuthConfig FileInfo Options=Indexes,Limit
Order allow,deny
Allow from all
</Directory>
ChatLogs
接下来,我在服务器根目录中有一个目录,其中的.htaccess
文件定义如下:
Allow from all
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /www/.htpasswd
AuthGroupFile /dev/null
Require valid-user
当我尝试访问目录时,出现 500 服务器错误,服务器日志中显示以下内容(10.109.1.92
这是我的内联网 IP):
[alert] [client 10.109.1.92] /www/ChatLogs/.htaccess: allow not allowed here
我理解这是因为.htaccess
文件中有以下声明:
Allow from all
但有人可以解释一下吗为什么Allow
不允许该指令?我想稍后限制对某些 IP 地址范围的访问;并且更希望将其放在单个目录中,而不是将它们设置在httpd.conf
文件中。
答案1
因为 Limit 前面有一个逗号。这使得 apache 将其解析为 Options 的一部分,而不是单独的覆盖。可以这样想:
AllowOverride
AuthConfig
FileInfo
Options=Indexes,Limit
你想要的是
AllowOverride AuthConfig FileInfo Limit Options=Indexes
更多信息请访问Apache 核心文档。