Why is allow not allowed here in apache2
I've the following in my httpd.conf
file:
<Directory "/www">
Options Indexes FollowSymLinks
AllowOverride AuthConfig FileInfo Options=Indexes,Limit
Order allow,deny
Allow from all
</Directory>
Next, I've a directory ChatLogs
located in server root, with a .htaccess
file defined as follows:
Allow from all
AuthName "Restricted Area"
AuthType Basic
AuthUserFile /www/.htpasswd
AuthGroupFile /dev/null
Require valid-user
and when I try to access the directory, I get a 500 server error with the following in server logs (10.109.1.92
is my intranet IP):
[alert] [client 10.109.1.92] /www/ChatLogs/.htaccess: allow not allowed here
I understand that this is because of the following statement in .htaccess
file:
Allow from all
but could someone explain why is the Allow
directive not allowed? I want later to restrict access to certain IP address ranges; and would prefer if it can be placed in singular directories instead of setting them in httpd.conf
file.
Solution 1:
Because you've got a comma before Limit. That makes apache parse it as though it were part of Options rather than a separate override. Think of it like this:
AllowOverride
AuthConfig
FileInfo
Options=Indexes,Limit
What you want is instead
AllowOverride AuthConfig FileInfo Limit Options=Indexes
There's more information at the Apache core documentation.