[Up] [Next] [Previous]

サーバサイドインクルード

サーバサイドインクルード機能はNCSA WWWサーバが最初に開発した機能で、ファ イルがユーザに送信される前にHTMLファイルの中に記述された環境変数の値、 スクリプトの実行結果、ファイルを含ませてから送信する機能です。例えば、 アクセスした時の時刻を表示させたり、ログインしているユーザを表示させた りする場合に用いられます。

サーバサイドインクルードは、次の一般形式を持ちます。ちょうど、HTMLのコ メントを拡張したものです。

<!--#コマンド タグ1="値1" タグ2="値2" -->
コマンドには次のようなものがあり、コマンドによってタグが決まります。 また、次の環境変数が利用できます。

環境変数 意味
DOCUMENT_NAME 現ファイル
DOCUMENT_URI ファイルの仮想パス
QUERY_STRING_UNESCAPED デーコードできない文 字列
DATE_LOCAL ローカルタイムゾーンの日時
DATE_GMT GMTの日時
LAST_MODIFIED 最後にファイルを変更した日時

簡単な例として、次の例を見てみましょう。

Access Date: <STRONG><!--#exec command="date"--></STRONG><P>
<!--#include file="foo.txt"-->

foo.txtには次のファイルを書いておきます。

<H2>Test</H2>

This is a test.
こうすることによって、アクセスした時の日時とfoo.txt が自動的に読み込ま れます。


サーバサイドインクルードの例

また、NCSA httpd では .shtmlという接尾辞のついたファイルは自動 的にそのファイルがサーバサイドインクルード(SSI)として扱われます。例え ば、以下のようなtraceroute.shtmlというファイルを作成しておき ます。

<TITLE>Traceroute</TITLE>
<H2>How do I get from here to there?</H2>
<PRE>
<!--#exec cmd="/usr/sbin/traceroute $REMOTE_ADDR"-->
</PRE>

そして、このファイルへのアンカーを作成しておくと、そのアンカーをクリッ クすると、WWWサーバからクライアントに向かってtracerouteが実行 され、サーバからクライアントまでの辿った経路をクライアント側が知る事が できます。

<A HREF="traceroute.shtml">ここからそこまでの経路?</A>
また、ページに対するアクセス回数をカウントするスクリプトは、サーバサイ ドインクルード(SSI)機能を使うと簡単に作成できます (下記のコードはファ イルをロックしないため、同時アクセスが行われると問題が起こり、実用で使 うには難があります)。

#!/usr/bin/perl
open (COUNT,"./countfile");     # カウンターファイルを開きます。
$counter = <COUNT>;             # カウンターファイルの値を読み込みます。
close (COUNT);
open (COUNT, "> ./countfile");  # 書き込みモードで開きます。
print COUNT +($counter+1);      # 1足してカウンターファイルに書き込みます。
close (COUNT);
print $counter;                 # ページに出力します。

そして、HTMLページは次のようにします。

アクセス回数 <!--#exec cmd="count.cgi"--> 回
デモ

SSI機能をサポートしていないCERN サーバでは、 George Burgyan氏と Gabe Schaffer氏が開発したssis と呼 ばれるツールを使用することによって、疑似的に可能です。


[Up] [Next] [Previous]