【さくらレンタルサーバー】PHP拡張子なしでアクセス
現象
さくらのレンタルサーバーを使うホームページが、前からphpファイル拡張子なしでアクセス(例えば、www.example.com/demo.phpのリンクが、www.example.com/demoでアクセスできる)できてましたが、
最近はPHP拡張子なしでのアクセスができなくなりました。
原因推測
phpinfo()でPHP関連の情報を確認したら、PHPが先月の月末に更新(ビルド)されたことを確認できました。
それに関係あるかと推測します。あくまで推測です。。
対応
apache rewrite(失敗)
まず思い出すのは、apacheのrewriteモジュールです。
.htaccessファイルに下記を記入。
1 2 3 4 5 | RewriteEngine on RewriteBase / RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)$ $1.php |
rewrite自体がうまく行っているみたいでしたが、404になって失敗でした。
確認方法:
www.example.com/demo2 (demo2.phpは存在しない)にアクセスしたら、www.example.com/demo2.php.php.php…にredirect制限数まで「.php」が追加してredirectしてきました。
ww.example.com/demo (demo.phpは存在する)にアクセスしたら、404になりました。
htmlファイルをphpとして実行(失敗)
今考えれば、本件とは関係ない対応になりますが。
試しにやってみただけで、結果として、phpファイルが実行することなく、ソースコードそのものがダウンロードされることになりました。(大変!)
方法は、.htaccessファイルに下記を記入するだけです。
1 2 | Action myphp-script /php.cgi AddHandler myphp-script .php .html |
php.iniファイルで設定指定(失敗)
php.iniに、expose_phpをoffに設定すれば、拡張子なしでアクセスできるという記事を見ました。
phpは、各フォルダのphp.iniの設定を見るから、下記内容だけphp.iniを作成し、対象フォルダにアップしてみましたが、反応が変わらなく、失敗でした。
1 | expose_php 0 |
phpファイルをhtmlとして実行(成功)
どうすればわからないから、こまめに検索することにしました。
そして、この記事を発見しました。
対応方法は難しくないから、やってみることにしました。そして、この対応が成功しました!
1 | AddType text/html .php |
結論
レンタルサーバーの独自仕様は、対応は本当に大変です。。
Author Profile
スターフィールド編集部
SHARE