こんばんは、Webプログラマの篠田です。
プログラムに暗い方から見るとプログラマというのはどうやら魔法使いのようにみえるようですね。(魔法使いとまでは言わないでも凄いと目を輝かせて言われることは多いと思います)
そんな魔法使いにお願いされる案件で知っておくと感謝されるかも!という方法をご紹介したいと思います。
【注意】
この方法が使える場面は限られている上に、できたからといって賞賛されるかは保障致しませんので予めご了承くださいm(_ _)m
この記事の目次
要件で冷や汗をかいてみよう!
・現在既に公開されている「.html」のサイト内で「.php」を動かしたい。
・SEOや外部リンクの関係で拡張子を「.php」にしてはいけない!
・流石に「SSI」はこのご時世使うのははばかられるのでなしの方向で。
・.htaccessは使用可能
・PHPも使用可能(PHP5.3)
・サーバーは実は「heteml(ヘテムル)」
・JSを使っての解決はとりあえず保留
さて、上記のようなすごく特殊な状態を解決する方法を見ていきましょう。
「.html」内でPHPを動かすことはできるのか?
結論から言うと、「動かすことができます!!(ドヤ)」
なので、こういった無茶を言われても「拡張子を.phpにしないと無理ですよ!!」なんて力強く言ってしまわないように注意しましょう。
ポイントは「.htaccess」を使う点です。
「.htaccessが使えない!!」というパターンは今回は考えないとします。
今回は「heteml」で「PHP5.3」が動いている場合の書き方を下記に記載します
hetemlの場合
1 |
AddHandler php5.3-script .php .html |
この1行を「.htaccess」ファイルの1行目などに記述すればOKです。
また「heteml」で「PHP5.4」ならば下記のようにします
1 |
AddHandler php5.4-script .php .html |
しかし「heteml」で「PHP5.2」ならば下記のようにします
1 |
AddHandler php5-script .php .html |
つまり、PHPのバージョンによって書き方が変わります。
そのため、いったいお使いのサーバーでどのバージョンのPHPが動いているのかによって動かなかったりするので要注意です。
そうなると「私のサーバーはロリポップだけど同じでいけるかな!?」といって同様の記述をしても動きませんorz
ロリポップの場合
1 2 3 |
AddHandler php5.2-script .htm .html #PHPが5.2の場合 AddHandler php5.3-script .htm .html #PHPが5.3の場合 AddHandler php5.4-script .htm .html #PHPが5.4の場合 |
PHPのバージョン「5.3」と「5.4」の書き方は「heteml」と同じですが「5.2」は「heteml」に比べて素直ですね。
さくらインターネットの場合
1 2 |
Action myphp-script /php.cgi AddHandler myphp-script .php .html |
上記を「.htaccess」に書き込みます。
ですが、さくらサーバーは仕様が特殊なので上記「.htaccess」だけでは動かないのでもう1つファイルを用意します。
[php.cgi]
1 2 |
#!/bin/sh exec /usr/local/bin/php-cgi |
※「php.cgi」のパーミッションを「705」にします。
XAMPPの場合
1 |
AddType application/x-httpd-php .html |
テスト環境でも再現する必要がありますので「XAMPP」でも同様の動きができるよう.htaccessを用意して書いておきます。
まとめ
「.html」で「.php」のようにPHPを動かすという無茶振りにも対応できそうですね。
ただし、この方法はあくまでも「最終手段」としてとっておいてください。
「.php」で動かせるのであればそれがベストの方法ですので、覚えたからといって多用しないように注意してください。