• 締切済み

PHPの拡張子を見せない方法

Apache + PHPのサイトで、PHPファイルの拡張子を 表示させない設定について質問です。 例えば、list.php や news.php にアクセスする 時に  http://xxx.com/list?year=2004  http://xxx.com/news?no=15 のように使えるようにしたいと考えています。 いくつか調べてみたのですが、どうやら、 .htaccess ファイル内に  Options +MultiViews を書き込んだりするらしい、というところまでは なんとか分かったのですが、具体的な設定記述を 書いている情報にたどりつけませんでした。 どなたかご存知の方がいましたら、教えていただ けませんでしょうか? よろしくお願いします。

  • mela2
  • お礼率70% (133/189)

みんなの回答

  • zebedeer
  • ベストアンサー率66% (80/121)
回答No.4

>できれば、PHP拡張子付きのままで隠す方法がありませんでしょうか? AliasMatchを使えば可能です。 (ただし、以下の例の場合、画像ファイル等もphpと見なします。) AliasMatch "/path/to/php/(.+)" "/path/to/php/$1.php"

参考URL:
http://httpd.apache.org/docs-2.0/ja/mod/mod_alias.html
mela2
質問者

お礼

ありがとうございます。 AliasMatch ですね。参考URLを読んでみたのですが、まだ理解できていないので、他の情報とあわせて調べて見ます。

  • yatokesa
  • ベストアンサー率40% (201/496)
回答No.3

>できれば、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)
回答No.2

興味を持って調べた矢先、Googleで「.htaccess」「拡張子無し」でズバリの回答が一発でヒットしました^^;)。 実験していないのでどのバージョンでもうまくいくのかは不明です。

参考URL:
http://iwamode.com/etc/urawaza.html
mela2
質問者

お礼

yatokesaさん、ありがとうございました。 今回、イメージしていたものとぴったりくるものは出来ないようですが、yatokesaさんから教えていただいた方法が、一番それに近いことを実現できそうです。 また機会がありましたらよろしくお願いします。

mela2
質問者

補足

情報ありがとうございます。 参考URL確認させていただきました。 とりあえず、拡張子を見せない、という目的は達成 できそうですが、この方法で拡張子を見せなくする ためには、既存のPHPファイルの拡張子をすべて変更 する必要があり、更にはPHPファイル内のURLまで変更 しなければなりません。大量です(涙)。 さらに、対外的にリンクしてもらっていたPHPファイル へのリンクが切れてしまいます。 できれば、PHP拡張子付きのままで隠す方法があり ませんでしょうか?

  • chupark
  • ベストアンサー率41% (90/218)
回答No.1

.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じゃないでしょうか?

mela2
質問者

お礼

回答ありがとうございました。 私がさがしていた方法とは違いましたが、chuparkさんから教えていただいた方法が、正攻法みたいですね。 別の機会に参考にさせていただきます。

mela2
質問者

補足

情報ありがとうございます。 先日、その方法も見つけました。しかし、その方法 だと、  http://xxx.com/list.html?year=2004  http://xxx.com/news.html?no=15 となり、HTML拡張子が付いてしまうんですよね。 今回やりたいのは、拡張子PHPをHTMLへ偽装(?) ではなく、拡張子全般の隠蔽、といったところで しょうか。

関連するQ&A

  • 拡張子を隠す方法について2

    以前拡張子を隠すご質問を行い、とりあえずやってみようと色々とやってみたのですが反映されずエラーになってしまいます。 調べた結果、共有サーバーのため.htaccessに制限がありました。 ◇ ご利用いただけない記述の例 DirectoryIndex 例:DirectoryIndex index.php index.shtml Digest認証 例:AuthType Digest mod_headers Header ディレクティブ 例:headers_module AddTypeの一部記述 AddType ディレクティブ 例:AddType application/x-httpd-php .php .html Options ディレクティブ 例:Options FollowSymLinks RewireEngineディレクティブ 例:RewriteEngine On 制限されているとは知らず試したものは ForceType application/x-httpd-php や AddType application/x-httpd-php なのですが、制限されている以上不可能なのでしょうか? php.iniは設定できるようです。 やりたいことはこのご質問と同じだと思うのですが http://soudan1.biglobe.ne.jp/qa5542492.html xxx.php を xxx のように拡張子を隠すのと xxx.php?id=123 を xxx.php/123 のようにGETで渡す番号だけにしたいということです。 何か設定で試したほうが良い方法がございましたら、どうかお知恵をお貸しください。 よろしくお願いします。

    • ベストアンサー
    • PHP
  • php拡張子を無くす

    共用サーバーを利用している為、Apacheを触ることが出来ない為、.htaccessファイルに以下のように記述し設定をしています。 <Files *.php> ForceType application/x-httpd-php </Files> この設定では、「index」「index.php」どちらもアクセスするとPHPが動作してしまいます。 「index」は動作させて「index.php」は動作させないようにすることは可能でしょうか? もし可能であれば、方法を教えていただけないでしょうか? ちなみに、php.iniは触ることができます。

    • ベストアンサー
    • PHP
  • PHP拡張子としてHTML型を使用したいのですが

    タイトルにも書いたように、 PHP拡張子としてHTML型を使用したいのですが、うまくいきません。 .htaccessファイルに AddType application/x-httpd-php .htm .html を記述し、転送の上、パミッションを644に設定しました。 ---- test.php ----------------------------------- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=EUC-JP"> </head> <body> <?php print "hello"; ?> </body> </html> ------------------------------------------------- 上記 test.phpを.htaccessファイルと同じディレクトリに転送して実行すると正常に動くのですが、test.htmlにリネームすると、何も表示されません。 尚、.htaccess でベーシック認証はできますの、.htaccess自体は無効にはなっていないようです。 サーバーの環境は Apache 2.0.50 Fedora Core 1 kernel 2.4.22 よろしく、お願いいたします。

  • 拡張子htmlでphpが動作するフォルダと動作しないフォルダを作成する方法

    【やりたいこと】 htdocs フォルダ直下に約100個のフォルダがあるのですが、 その中の特定のフォルダだけは、 拡張子 html で php が動作しないようにしたいです(特定のフォルダ以外では拡張子 html で php が動作して欲しいです)。 また、拡張子 php に関してはどのフィルダでも php が動作するようにさせたいです。 【試したこと】 1. httpd.confに AddType application/x-httpd-php .php .html と記述(拡張子 html で php が動作する事を確認)。 2. httpd.confに <Directory "/usr/local/apache2/htdocs"> AllowOverride All </Directory> と記述し、ドキュメントルート以下で .htaccess が使えるようにする。 3. htaccess に AddType application/x-httpd-php .php と記述し、拡張子 html で php の実行が無効化されないか試してみましたが、 拡張子 html で php が実行されてしまいNG。 4. htaccess に php_flag engine off と記述し、拡張子 html で php の実行が無効にならないかなと試してみて、 無効化されるのは確認しましたが、 そのフォルダ内では拡張子 php でも php の動作が無効化されてしまいNG。 ここで手詰まりとなってしまいました。 以上、よろしくお願いします。

  • apacheで拡張子を省略する方法

    XAMPP 1.6.6a (Apache 2.2.8 + OpenSSL 0.9.8g, MySQL 5.0.51a, PHP 5.2.5 & PHP 4.4.8)を家のPC (Win XP) に入れて,PHPファイルをインターネットで公開する前のテストに使おうと思っています. ネット上では,レンタルサーバを使っており http://www.test.org/data/edit.php?a=b を http://www.test.org/data/edit?a=b と書いても表示されます. 上記ローカル環境では http://localhost/data/edit.php?a=b は表示されるのですが http://localhost/data/edit?a=b が表示されません (Error 404) 少し調べてみて,Options +MultiViews と書いた.htaccess ファイルを,ファイルの入っているのと同じフォルダに入れてみました.そうしたら,それまで表示されなかった http://localhost/data/index?a=b は正しく表示されるようになったのですが, http://localhost/data/edit?a=b は依然として表示されません. 正確に言うと,前は,Error 404 だったのが,上記 .htaccess ファイルを置いたら,変な文字化けのページが表示されたり「ファイルを保存しますか」のメッセージが出たりするようになりました. 他にhttpd.confの中に Options Indexes FollowSymLinks Includes ExecCGI MultiViews と,MultiViewsを追加しましたが,動作が変わった様子はありませんでした. 何か簡単なミスをしているような気がするのですが,それが何なのかわかりません.よろしくおねがいします.

  • phpの拡張子をシンプルに

    質問のカテゴリが難しいのですが現在phpでサイトを作っているのでこのカテでご質問させて頂きます。 現在サイトがある程度出来てきたので釣り仲間に広げて使ってもらおうかと思いだしているのですがURLの拡張子を非表示に基本しているサイトが多い気がして調べてみました。 サイトで http://cappee.net/domain/new-website-htaccess このように説明しているサイトがあり早速やってみようかと思ったのですが、これをおこなうことでformで渡している値(GET)で受け取るときにどうなるのでしょうか? 例えば簡単に users.php?no=<?php echo h($users["no"]); ?> このような感じで値を渡す際に正常に渡すことが出来るのでしょうか? また、このように拡張子を隠すようにした場合は、このformの書き方も users?no=<?php echo h($users["no"]); ?> このように拡張子はなくして書いていくのでしょうか? 拡張子を隠すことを行ったことがなく想像がつかず、修正してグチャグチャになってしまう前に一度ご質問させて頂きました。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • PHP
  • phpの拡張子について

    phpの拡張子をApacheの設定でhtmlに変更できると聞いたのですが本当でしょうか?

    • ベストアンサー
    • PHP
  • ハッスルサーバー PHP4 PHP5

    .htaccessというファイルを作成し  AddHandler x-httpd-php5 .php という記述を追加することにより、PHP5の利用が可能にる。 というメールをハッスルサーバーから頂いて、早速そのように設定したところ、拡張子phpのページをクリックすると、phpファイルをダウンローロしようとする画面が出てくるようになりました。 .htaccessファイルを削除しても、phpファイルをダウンローロしようとする画面は消えません。 どのように設定すれば、以前のように普通にPHPページを閲覧できるようにできますか? よろしくお願いします。

    • ベストアンサー
    • PHP
  • html内でのphp実行方法とDL画面

    お世話になります。 掲題の件を実行したく、以下の設定をしました。 .htaccessに以下を記述 AddType application/x-httpd-php .htm .html html内で以下を記述 <?php include("./xxx.php"); echo get_value(xxx.xml'); ・・・(1) ?> (1)phpソース内でrss結果を取得し、echo表示する関数で 単独起動は確認済み、かつiframeタグでは表示できています。 上記のような状態で実行できないのですが、 何かほかに設定が必要でしょうか。 サーバーはお名前.comです。 また、.htaccessを配置したところ、ファイルダウンロード画面が表示されてしまうのですが こちらも何か設定等必要でしょうか。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • phpについて

    phpの利用は許可されているサーバーなのですが、 たとえばhttp://www.xxx.com/index.phpをhttp://www.xxx.com/だけで表示できるようにするにはどうすればいいのでしょうか?.htaccessでしょうか?でもどう書けばいいかわからないです。 あと、どっかのサイトで携帯端末との振り分けがあったのですけど、それが実行できなくしかたなく1つのphpファイルの中にそれぞれのhtmlを書いて、それを場合わけ(携帯の場合はこっち。それいがいはあっち)しようかと思っているんですけど、容量とか考えたらあまりよくないのでやっぱり振り分けしたいんでできそうなの教えてください。