■ 13.CGIの結果をHTML文書に埋め込みたい。(SSI)
掲示板やカウンタなど、CGIの結果を別ページに埋め込みたいと思うことがあります。
このような場合は、SSI(Server Side include、サーバー・サイド・インクルード)を使用すると簡単です。
ただし、サーバーでSSIを許可していることが前提です。
SSIを許可していないサーバーでも、できる事がありますので以下の内容を試してみる価値はあります。
私は過去にSSIを許可していないと言われたサーバーで以下の内容を試したところ、可能だった事があります。
SSIの呼び出しには以下のようなものがありますので、一度試されると良いでしょう。
<!--#include file="ファイル名を記述"--> <!--#include file="ファイル名を記述" --> <!--#include virtual="ファイル名かCGIの呼び出しを記述"--> <!--#include virtual="ファイル名かCGIの呼び出しを記述" --> <!--#exec cgi="CGIの呼び出しを記述"--> <!--#exec cgi="CGIの呼び出しを記述" --> <!--#exec cmd="CGIの呼び出しかコマンドを記述"--> <!--#exec cmd="CGIの呼び出しかコマンドを記述" -->
特に上4つは、安全な呼び出し方として、今までのSSI呼び出しの代替方法として、最近使われることが多いようです。
埋め込みたいHTML文書中に上記のいずれかを記述します。
そして、そのHTML文書の拡張子を「*.htm」、「*.html」から「*.shtml」に変更します。
一般的には、SSIを埋め込むHMTL文書の拡張子は「*.shtml」か、「*.shtm」です。
サーバーによっては「*.shtml」じゃないと動作しない場合があります。
最近のサーバーは拡張子が「*.htm」、「*.html」のままでもSSIが使用できるようになってきています。
詳しくはそれぞれのサーバー管理者に問い合わせるか、サポートで尋ねるといいでしょう。
また、サーバーによっては、「cgi-bin」フォルダ内のHTML文書(*.html)からCGIを呼び出すとエラーになる場合があります。
その場合は、「cgi-bin」以外にHTML文書(*.html)を置いてください。
一例を記述しておきます。
ファイル名は、適宜変更してください。
public_html(自分のホームページ)
├test.shtml
└cgi-bin
└test.cgi
という風に、「SHTML」と「CGI」を設置し、shtmlからCGIを呼び出します。
呼び出し方は次のような感じです。
<!--#include virtual="./cgi-bin/test.cgi" -->
SSIはCGIの結果だけでなく、HTMLの中にHTMLやテキストを埋め込むこともできます。