本当に久しぶりに技術的な事でも。
php-fpmを使っていた際に微妙にはまった出来事です。
目次
エラーページの制御
私が運営しているサイトにて、htaccessにて以下のような制御を入れました。
ErrorDocument 404 /notfound.html
ステータスコードが404の場合、こちらで用意した"notfound.html"を表示するように制御します。
こちらを記述してから123476564.htmlみたいな存在しないページにアクセスすると画面に「not found」とだけ表示されるようになりました。
しかし、.php拡張子の場合、上記notfound.htmlでは無く、phpから返される「File not found. 」が表示されます。
拡張子phpの場合に.htaccessが効かない
原因として考えられたのは、phpを最近php-fpmで処理していること。
# vim /usr/local/apache2/conf/extra/httpd-vhosts.conf <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000/" </FilesMatch>
上記のFileMatchの箇所をhtmlに変更すると、今度はhtmlで同様の現象が発生したので、原因はこちらと判明。
解決策
apache側の設定で解消。
stackoverflow.com
上記サイトに記載があるように、ProxyErrorOverrideがデフォルトでOffになっているので、こちらをOnに設定する。
<VirtualHost *:80> <FilesMatch \.php$> SetHandler "proxy:fcgi://127.0.0.1:9000/" </FilesMatch> ProxyErrorOverride on </VirtualHost>
雑ではありますが、とりあえず解消しました。