Назад | Перейти на главную страницу

Почему здесь нельзя разрешить разрешить в apache2

В моем 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 файл.

Потому что перед Limit стоит запятая. Это заставляет apache анализировать его так, как если бы он был частью параметров, а не отдельным переопределением. Подумайте об этом так:

AllowOverride 
               AuthConfig
               FileInfo 
               Options=Indexes,Limit

Вместо этого ты хочешь

AllowOverride AuthConfig FileInfo Limit Options=Indexes

Больше информации на основная документация Apache.