さくらのレンタルサーバでHTMLをphpとして処理させている際に、404ページが正しく表示されない
タイトルが長くて恐縮です...。
この情報は、2013年6月15日現在のものです。
多分、年内まで有効です。
さくらインターネットスタンダードプランにおいて、html拡張子のファイルをphpとして処理させた場合、以下のような問題が発生します。
存在しないhtmlにアクセスした際に画面上に、「No input file specified.」と表示される。
原因としては、すべてのリクエストがもれなくphp.cgiに向いているためだと思います。
HTTPのステータスコードとしては404が戻ってきているようなので、直接問題は無いと思いますが、Googleさんの心象的にどうなんだろう、とか気になったので少し対策を考えてみました。
.html拡張子のものをphpとして処理する
Action myphp-script /php.cgi AddHandler myphp-script .php .html
存在しないファイルを指定したphpにリダイレクトする
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} "¥.(php|html)$" RewriteRule .+ /404redirect.php
404redirect.phpは以下のような内容です。
<?php header("HTTP/1.0 404 Not Found"); exit(); ?>
これで該当URLにアクセスすると、真っ白なページが表示されます。