В моем 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.