最近、Apache2.4.7モードをmpm_pre-forkからmpm_eventに切り替えました。それ以来、Files
ディレクティブを機能させることができませんでした。
<Files "*.php">
Header set Cache-Control "no-cache, no-store, must-revalidate, max-age=0"
</Files>
私はなんとかこの複雑な混乱に取り組むことができました:
<Files ~ "((^$)|(php))">
しかし、私の正規表現の知識によれば、これはファイル名のどこかに「php」が付いているファイルと一致します。 この他の質問 から「null」の場合に一致する必要があることがわかりました。 FilesMatch
も試しましたが、同じ結果になりました。
これは、Apache2.4のドキュメントからわかることからは意味がありません。他の誰かがこの問題のようなものを見たことがありますか?
[〜#〜] update [〜#〜]:サーバーを変更せずにmpm_preforkerとmod_phpにロールバックしました。次に、Apacheとphpを削除し、mpm_preforkerとして再インストールすると、再び機能しました。次に、mpm_eventとphp-fpmにアップグレードしましたが、しばらくすると機能しなくなりました。私はそれが壊れている場所を特定しようとしています、そして私が見つけたものを投稿します。
UPDATE2:これはfastcgiまたはphp-fpmのものに関連しているようです。 2つの<Files>
ディレクティブがあります。1つはhtml
用で、もう1つはphp
用で一意のヘッダーを生成します。
<Files *.html>
Header always set X-Aaron-files "html match"
</Files>
<Files *.php>
Header always set X-Aaron-files "php match"
</Files>
架空のphp
ファイルに移動すると、php-match
のヘッダーが付いた404メッセージが表示されます。しかし、実際のphp
ファイルに移動すると、サーバーはphpファイルを実行しますが、php
ファイルの一致を示すヘッダーを返しません。
これは、fastcgiとphp-fpmのものに関連しているようです。
これがどのようにテストを通過したのかわからない...
要求されたファイルisがphp-fpmによって処理される場合、ディレクティブではない処理されます。
代わりに、ファイルない php-fpm(欠落しているphpファイルに対する404応答を含む)によって処理される場合、ディレクティブあります処理されます。
<Files "*.php">
動作します
リダイレクトページなど、ヘッダー以外のことを試してください。
<Files "*.php">
redirect 301 / /anyPage.htm
</Files>
正規表現で同じことをしたい場合は、
<Files ~ "\.php">
redirect 301 / /anyPage.htm
</Files>
あなたが何もそしてどんなphpページにもマッチさせたいならば:
<Files ~ "(^$|\.php)">
redirect 301 / /anyPage.htm
</Files>
Filematchの使用:
<FilesMatch "(^$|\.php)">
redirect 301 / /anyPage.htm
</FilesMatch>
あなたはそれが機能するテストをすることができます。
ヘッダーを上書きする命令がどこかにあると思います