私の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つのディレクトリに配置できるようにしたい場合。
リミットの前にカンマがあるからです。これにより、Apacheは個別のオーバーライドではなく、オプションの一部であるかのように解析します。次のように考えてください。
AllowOverride
AuthConfig
FileInfo
Options=Indexes,Limit
代わりにあなたが欲しいのは
AllowOverride AuthConfig FileInfo Limit Options=Indexes
詳細は Apacheコアのドキュメント にあります。