web-dev-qa-db-ja.com

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ファイルに設定するのではなく、1つのディレクトリに配置できるようにしたい場合。

6
hjpotter92

リミットの前にカンマがあるからです。これにより、Apacheは個別のオーバーライドではなく、オプションの一部であるかのように解析します。次のように考えてください。

AllowOverride 
               AuthConfig
               FileInfo 
               Options=Indexes,Limit

代わりにあなたが欲しいのは

AllowOverride AuthConfig FileInfo Limit Options=Indexes

詳細は Apacheコアのドキュメント にあります。

5
Jenny D