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.