動的なページを静的なページに、見せる方法について、一つ質問があります。


例えば・・

http://q.hatena.ne.jp/index.html.php

というURLを

http://q.hatena.ne.jp/index.html

このように、「php」という文字を省いた、URLに変化(偽装)させするには、「htaccessファイル」に対して、どのような記述をすればよいのでしょうか?

また、「index.html」だけ「htaccess」で設定した効果が適応されるわけではなく、全ページに適応させたいと思っています。


回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2006/07/03 11:33:58
  • 終了:2006/07/03 17:04:41

ベストアンサー

id:ootatmt No.7

ootatmt回答回数1307ベストアンサー獲得回数652006/07/03 15:15:28

ポイント50pt

「AddType application/x-httpd-php .html」この文を 「.htaccess 」に書いて、任意のフォルダに注入するだけでは、駄目ということでしょうか?

サーバの設定によります。


まず、サーバの設定を行う際には .htaccess でどのような設定を可能とするかを決めますが、これを決めるのが、AllowOverride ディレクティブ と呼ばれる部分で、Apache(Webサーバ)の設定ファイルの中に記述されています。

AllowOverride というのは .htaccess による設定の上書き(Override)を許可(Allow)する項目を決める部分です。

http://httpd.apache.org/docs/2.0/ja/mod/core.html#allowoverride


これは通常サーバの管理者のみが設定を変更できるもので、レンタルサーバなどのユーザは変更できません。


つまり、サーバ管理者が .htaccess の中で、AddType の使用を許可していれば、

.htaccess に AddType application/x-httpd-php .html を記述して任意のフォルダに置くだけで .htmlファイルが phpプログラムとして実行されますが、AddType の使用が許可されていなければ駄目です。


お使いのサーバで AddType が使えるかどうかは管理者(レンタルサーバ業者)に聞いてみてください。

id:yoberu

詳しく説明していただき、本当にありがとうございました。

ようやく理解することができました。

2006/07/03 16:59:39

その他の回答(8件)

id:aiaina No.1

aiaina回答回数8179ベストアンサー獲得回数1312006/07/03 12:02:20

ポイント30pt

mod_rewriteはどうでしょうか??

http://exam.su-jine.com/mod_rewrite/mod_rewrite.php?var1=mod&...

id:yoberu

現在、使用しているサーバーでは「.htaccess」は利用可能ですが、「mod_rewrite」に対しての記載がないので、利用不可のようでした。

しかし、このような方法もあるのだと、わかりましたので、有益なご回答ありがとうございました。

2006/07/03 14:21:44
id:vector_xenon No.2

vector回答回数113ベストアンサー獲得回数42006/07/03 12:24:04

ポイント30pt

AddTypeを記述します。

AddType x-http-php .php .html

http://www.tagindex.com/other/htaccess.html

id:yoberu

そこに記載されている、一行の文を「.htaccess」ファイルに記述し、動的から静的にしたいページが含まれる任意のフォルダに、注入するだけでいいのでしょうか?

よろしければ、またご回答いただければ幸いです。

2006/07/03 14:23:49
id:ootatmt No.3

ootatmt回答回数1307ベストアンサー獲得回数652006/07/03 12:27:01

ポイント30pt

http://httpd.apache.org/docs/2.0/ja/mod/mod_mime.html#addhandler

.htaccess に、以下の記述を加えればいいでしょう。

AddHandler cgi-script .html

これで、.html の拡張子を持つファイルは CGIプログラムとして扱われます。


phpで実行したい場合は、ファイルの一行目に

#!/usr/local/bin/php

などのphpへのパスを記述しておきます。


URLを変えるわけではなく、index.html を php として実行するわけですので、質問の趣旨とは ずれているかもしれませんが、そのときはご容赦ください。

id:yoberu

少し、質問の趣旨とはずればいましたが、現在、言語を勉強中の自分にとっては、有益な情報でした。

ご回答いただき、ありがとうございました。

2006/07/03 14:25:37
id:jiangmin-alt No.4

jiangmin回答回数125ベストアンサー獲得回数82006/07/03 13:01:49

ポイント30pt

「Options」に「MultiViews」を加えればいいです。

http://q.hatena.ne.jp/1151894037

id:yoberu

ご回答、ありがとうございます。

よろしければ、もう少し説明を付け加えていただき、詳しく教えていただけないでしょうか?

質問する際に、自分が「初心者」という説明文を入れ忘れたのが、いけなかったのかもしれません。

2006/07/03 14:31:49
id:ootatmt No.5

ootatmt回答回数1307ベストアンサー獲得回数652006/07/03 14:13:23

ポイント30pt

2番の方の回答を見て気づきましたが、AddType のほうがいいですね。


http://httpd.apache.org/docs/2.0/ja/mod/mod_mime.html#addtype

記述内容は以下のようになります。

AddType application/x-httpd-php .html

これで .html の拡張子を持つものを phpプログラムとして実行させることが出来ます。


ただし、AddType や AddHandler を .htaccess の中で使う場合には、AllowOverride ディレクティブ に、FileInfo が含まれている必要があります。

id:yoberu

今、ざっとootatmtさんから、添付されたURL先を見てみたのですが、現段階の自分の能力では、理解できそうにありませんでした。

「AddType application/x-httpd-php .html」この文を 「.htaccess 」に書いて、任意のフォルダに注入するだけでは、駄目ということでしょうか?

「 .htaccess 」の中には、AllowOverride ディレクティブ やFileInfoに関する文を、記述する必要がある、と認識してもいいのでしょうか?

もし、よろしければ、初心者の自分にもある程度は理解できるレベルで、段階別に、ご教授お願いできませんか?

しっかりと、それなりの対価を差し上げるつもりでいますので、よろしくお願いいたします。

2006/07/03 14:58:28
id:ms-k No.6

ms-k回答回数5ベストアンサー獲得回数02006/07/03 14:35:48

ポイント30pt

vector_xenonさんの方法がもっとも正当かと思います。

つまりPHPそのものを .html という拡張子で動作可能にするということです。

従いまして、サイト内で動かすスクリプトは index.html.php などというややこしいものにしなくても index.html で動くということです(もちろんindex以外も全て)。

http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addhandler

id:yoberu

なるほど。

「index.html.php 」だけではなく「index.html 」でも動作することは、前々から理解していたのつもりでしたが、認識から確信に変化しました。

2006/07/03 15:10:50
id:ootatmt No.7

ootatmt回答回数1307ベストアンサー獲得回数652006/07/03 15:15:28ここでベストアンサー

ポイント50pt

「AddType application/x-httpd-php .html」この文を 「.htaccess 」に書いて、任意のフォルダに注入するだけでは、駄目ということでしょうか?

サーバの設定によります。


まず、サーバの設定を行う際には .htaccess でどのような設定を可能とするかを決めますが、これを決めるのが、AllowOverride ディレクティブ と呼ばれる部分で、Apache(Webサーバ)の設定ファイルの中に記述されています。

AllowOverride というのは .htaccess による設定の上書き(Override)を許可(Allow)する項目を決める部分です。

http://httpd.apache.org/docs/2.0/ja/mod/core.html#allowoverride


これは通常サーバの管理者のみが設定を変更できるもので、レンタルサーバなどのユーザは変更できません。


つまり、サーバ管理者が .htaccess の中で、AddType の使用を許可していれば、

.htaccess に AddType application/x-httpd-php .html を記述して任意のフォルダに置くだけで .htmlファイルが phpプログラムとして実行されますが、AddType の使用が許可されていなければ駄目です。


お使いのサーバで AddType が使えるかどうかは管理者(レンタルサーバ業者)に聞いてみてください。

id:yoberu

詳しく説明していただき、本当にありがとうございました。

ようやく理解することができました。

2006/07/03 16:59:39
id:vector_xenon No.8

vector回答回数113ベストアンサー獲得回数42006/07/03 15:25:04

ポイント50pt

5に対する回答になってしまいますが。。。


FileInfoはAddTypeの実行を許可するために必要なオプションです。

デフォルトで許可されていない限り付け加える必要があるでしょう。


AllowOverride FileInfo

AddType x-http-php .php .html


参考URL

http://httpd.apache.org/docs/2.0/ja/mod/core.html#allowoverride


これを記述した.htaccessを適用させたいディレクトリに置きます。

# 念のためですが、サブディレクトリにも反映されるので、サブディレクトリには配置しなくても大丈夫です。

id:yoberu

質問に答えていだだき、ありがとうございました。

サブディレクトリには、置かなくていいのですね。ご指摘がなければ、間違えていたと思います。

2006/07/03 16:59:52
id:jiangmin-alt No.9

jiangmin回答回数125ベストアンサー獲得回数82006/07/03 16:07:00

ポイント30pt

http://httpd.apache.org/docs/2.0/ja/mod/mod_negotiation.html

MultiViewsオプションを有効にすると、例えば index.html がリクエストされて、index.html が存在しない場合、 index.html.* を探して適切なものを返します。ですから、 index.html.php は index.html ででも index ででもアクセスできます。

2.xは↓も参照

http://httpd.apache.org/docs/2.0/ja/mod/mod_mime.html#multiviews...

id:yoberu

ご回答、ありがとうございました。

謎が解けたので、感謝しています。

2006/07/03 16:59:58

コメントはまだありません

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません