さくらサーバーでSSIのinludeで、HTML上にPHPを読み込ませる方法

さくらインターネットの場合、既存の状態ではHTML上でPHPを動かすことができない。
XREAやエックスサーバーなら、.htaccessを用意して、

AddType x-httpd-php .html

 (エックスサーバーの場合)

AddType application/x-httpd-php html

 (XREAなど) 

と記述すれば、拡張子がHTMLでもPHPを動かすことができる。これに対し、さくらインターネットでは、前述のコードを記述した.htaccessを用意してもHTML上でPHPは動かない。

さくらインターネットの場合は、PHPはCGIとして動く。それを逆手に取り、PHPの実行結果をSSIとして、HTML上に読み込む方法が可能である。

ちなみにさくらインターネットはスタンダードプラン以上でないとPHPが使えない。

まず、.htaccessを用意する。この中には以下のコードを記述。

AddType text/x-server-parsed-html .html

実行したいPHPに関しては、拡張子を.phpとして別にファイルを用意。1行目に

#!/usr/local/bin/php

とパスを記述した上で、スクリプトを書く。サーバーにアップロードしたら、パーミッションを「755」に変更。

ここでは以下のようなスクリプトを用意したとしよう。

#!/usr/local/bin/php

<?php
echo "こんにちは";
?>

ファイル名を、hello.php とする。読み込むHTML側は、

<html>
<body>

<p><!--#include virtual="hello.php" --></p>

</body>
</html>

という感じでSSIでincludeする。これによりHTML上にhello.phpの実行結果が読み込まれる。

ソースコードを確認するとHTMLで実行結果が読み込まれているから、SEO的な面でも不利にはならない。さくらで外部からコンテンツを読み込みたい場合は便利かも。

この手法は、通常のHTMLファイルもSSIとして処理されるので、サーバーに負荷をかけるので、その点には注意が必要だろう。