無効になっているのにApacheが.htaccessファイルを読み取るのはなぜですか?

Jul 31 2020

Apacheのドキュメントによると、AllowOverrideandAllowOverrideListオプションをに設定するとNone.htaccessファイルは完全に無視されます。ファイルシステムからそれらを読み取ろうとさえしません。

これらのオプションを両方とも設定してnoneいますが、Apacheは引き続き.htaccessファイルを読み取ります。.htaccessいくつかの有効なディレクティブを使用してファイルを挿入すると、500エラーがスローされるため、これを知っています。ディレクティブ(基本的には空の.htaccessファイル)をコメントアウトしても、500エラーはスローされません。したがって、明らかにApacheはまだ.htaccessファイルを読み取っています。

Apache2エラーログ(一般消費用に
サニタイズ):[Thu Jul 30 23:36:35.393831 2020] [core:alert] [pid 60903] [client dddd:10554] /var/www/example/.htaccess:ここでは許可されていません、リファラー:http://example.net/

問題はなぜですか?何が足りないのですか?ドキュメントに従って動作させる方法は?つまり、.htaccessファイルを読み取ろうとさえしません。

参照: https://httpd.apache.org/docs/2.4/mod/core.html#allowoverride

このディレクティブがNoneに設定され、AllowOverrideListがNoneに設定されている場合、.htaccessファイルは完全に無視されます。この場合、サーバーはファイルシステム内の.htaccessファイルを読み取ろうとさえしません。

回答

2 MrWhite Jul 31 2020 at 17:32

これは、Apache2.4.20で修正されたと報告されている以前のバージョンのApache2.4のバグのようです。
https://bz.apache.org/bugzilla/show_bug.cgi?id=58528

バグはAllowOverrideList None、値を明示的に設定すると正しくリセットされないことであるように思われます。

Apache 2.4.7で同じ(誤った)動作が見られることを確認しました

AllowOverrideListサーバー構成の他の場所に設定したことがない場合は、デフォルトがであるため、このディレクティブを省略できますNone。(デフォルトのままにすると、ドキュメントに従って正しく解釈されているように見えます。)