例えば・・
http://q.hatena.ne.jp/index.html.php
というURLを
http://q.hatena.ne.jp/index.html
このように、「php」という文字を省いた、URLに変化(偽装)させするには、「htaccessファイル」に対して、どのような記述をすればよいのでしょうか?
また、「index.html」だけ「htaccess」で設定した効果が適応されるわけではなく、全ページに適応させたいと思っています。
「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 が使えるかどうかは管理者(レンタルサーバ業者)に聞いてみてください。
現在、使用しているサーバーでは「.htaccess」は利用可能ですが、「mod_rewrite」に対しての記載がないので、利用不可のようでした。
しかし、このような方法もあるのだと、わかりましたので、有益なご回答ありがとうございました。
そこに記載されている、一行の文を「.htaccess」ファイルに記述し、動的から静的にしたいページが含まれる任意のフォルダに、注入するだけでいいのでしょうか?
よろしければ、またご回答いただければ幸いです。
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 として実行するわけですので、質問の趣旨とは ずれているかもしれませんが、そのときはご容赦ください。
少し、質問の趣旨とはずればいましたが、現在、言語を勉強中の自分にとっては、有益な情報でした。
ご回答いただき、ありがとうございました。
ご回答、ありがとうございます。
よろしければ、もう少し説明を付け加えていただき、詳しく教えていただけないでしょうか?
質問する際に、自分が「初心者」という説明文を入れ忘れたのが、いけなかったのかもしれません。
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 が含まれている必要があります。
今、ざっとootatmtさんから、添付されたURL先を見てみたのですが、現段階の自分の能力では、理解できそうにありませんでした。
「AddType application/x-httpd-php .html」この文を 「.htaccess 」に書いて、任意のフォルダに注入するだけでは、駄目ということでしょうか?
「 .htaccess 」の中には、AllowOverride ディレクティブ やFileInfoに関する文を、記述する必要がある、と認識してもいいのでしょうか?
もし、よろしければ、初心者の自分にもある程度は理解できるレベルで、段階別に、ご教授お願いできませんか?
しっかりと、それなりの対価を差し上げるつもりでいますので、よろしくお願いいたします。
vector_xenonさんの方法がもっとも正当かと思います。
つまりPHPそのものを .html という拡張子で動作可能にするということです。
従いまして、サイト内で動かすスクリプトは index.html.php などというややこしいものにしなくても index.html で動くということです(もちろんindex以外も全て)。
http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addhandler
なるほど。
「index.html.php 」だけではなく「index.html 」でも動作することは、前々から理解していたのつもりでしたが、認識から確信に変化しました。
「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 が使えるかどうかは管理者(レンタルサーバ業者)に聞いてみてください。
詳しく説明していただき、本当にありがとうございました。
ようやく理解することができました。
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を適用させたいディレクトリに置きます。
# 念のためですが、サブディレクトリにも反映されるので、サブディレクトリには配置しなくても大丈夫です。
質問に答えていだだき、ありがとうございました。
サブディレクトリには、置かなくていいのですね。ご指摘がなければ、間違えていたと思います。
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...
ご回答、ありがとうございました。
謎が解けたので、感謝しています。
詳しく説明していただき、本当にありがとうございました。
ようやく理解することができました。