- 締切済み
PHPの拡張子を見せない方法
Apache + PHPのサイトで、PHPファイルの拡張子を 表示させない設定について質問です。 例えば、list.php や news.php にアクセスする 時に http://xxx.com/list?year=2004 http://xxx.com/news?no=15 のように使えるようにしたいと考えています。 いくつか調べてみたのですが、どうやら、 .htaccess ファイル内に Options +MultiViews を書き込んだりするらしい、というところまでは なんとか分かったのですが、具体的な設定記述を 書いている情報にたどりつけませんでした。 どなたかご存知の方がいましたら、教えていただ けませんでしょうか? よろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- zebedeer
- ベストアンサー率66% (80/121)
>できれば、PHP拡張子付きのままで隠す方法がありませんでしょうか? AliasMatchを使えば可能です。 (ただし、以下の例の場合、画像ファイル等もphpと見なします。) AliasMatch "/path/to/php/(.+)" "/path/to/php/$1.php"
- yatokesa
- ベストアンサー率40% (201/496)
>できれば、PHP拡張子付きのままで隠す方法がありませんでしょうか? apache側で拡張子を補完してということですよね。これはちょっと無理だと思います、私の知る限り...。 ErrorDocument 404 /redirect.php の様に、例えば http://xxx.com/news?no=15 という存在しないファイルへのアクセスを redirect.phpというプログラムで受けて news.phpへ QUERY_STRINGSと共に渡すことはできるかもしれません。 前後しますが、 >更にはPHPファイル内のURLまで変更しなければなりません。大量です(涙)。 これは sedなどで一括置換で、 >対外的にリンクしてもらっていたPHPファイルへのリンクが切れてしまいます。 に関しても先の error documentの機能を使ってリダイレクトでという事も可能かと思います。
- yatokesa
- ベストアンサー率40% (201/496)
興味を持って調べた矢先、Googleで「.htaccess」「拡張子無し」でズバリの回答が一発でヒットしました^^;)。 実験していないのでどのバージョンでもうまくいくのかは不明です。
お礼
yatokesaさん、ありがとうございました。 今回、イメージしていたものとぴったりくるものは出来ないようですが、yatokesaさんから教えていただいた方法が、一番それに近いことを実現できそうです。 また機会がありましたらよろしくお願いします。
補足
情報ありがとうございます。 参考URL確認させていただきました。 とりあえず、拡張子を見せない、という目的は達成 できそうですが、この方法で拡張子を見せなくする ためには、既存のPHPファイルの拡張子をすべて変更 する必要があり、更にはPHPファイル内のURLまで変更 しなければなりません。大量です(涙)。 さらに、対外的にリンクしてもらっていたPHPファイル へのリンクが切れてしまいます。 できれば、PHP拡張子付きのままで隠す方法があり ませんでしょうか?
- chupark
- ベストアンサー率41% (90/218)
.htaccessを使う方法ではないですが… Apacheの設定ファイル httpd.conf の AddTypeの記述でPHPを実行可能にしている部分ですが AddType application/x-httpd-php .php こんな感じにしていますか? これを例えば以下のように AddType application/x-httpd-php .php .html .htm と書いておくと、PHPのファイルを *.htmlや*.htm などの拡張子で保存しておいてもPHPが実行されるはずです。 こうしておけば、URLにも.phpとしなくてもOKじゃないでしょうか?
お礼
回答ありがとうございました。 私がさがしていた方法とは違いましたが、chuparkさんから教えていただいた方法が、正攻法みたいですね。 別の機会に参考にさせていただきます。
補足
情報ありがとうございます。 先日、その方法も見つけました。しかし、その方法 だと、 http://xxx.com/list.html?year=2004 http://xxx.com/news.html?no=15 となり、HTML拡張子が付いてしまうんですよね。 今回やりたいのは、拡張子PHPをHTMLへ偽装(?) ではなく、拡張子全般の隠蔽、といったところで しょうか。
お礼
ありがとうございます。 AliasMatch ですね。参考URLを読んでみたのですが、まだ理解できていないので、他の情報とあわせて調べて見ます。