よくわからないエンジニア

よく分からないエンジニアの日々の記録

よくわからないエンジニア

php-fpm htaccessでのエラーページ制御

本当に久しぶりに技術的な事でも。
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>

雑ではありますが、とりあえず解消しました。