CGIの前身:Server side include

Web serverのhttpdがNSCA系のものならば、というよりも現在では WWWの本家のCERN系のhttpdでないならば、CGIとは別な方法で ページの自動微変更が可能です。SSIと呼ばれている特殊命令です。

HTTPdは普通のHTMLファイルは単にbrowserに送信するだけですが、 SSI命令が含まれているSHMTLファイルには送信する前にSSI命令を 解釈してその結果を送信データに付加して送信します。


■ SSIを使えるようにするための環境設定

SSIを利用できるようにするにはあなた自身かserver管理者が 少々の設定を行う必要があります。server管理者なら httpdの設定ファイルのひとつ srm.cnf の中で

AddType text/x-server-parsed-html .shtml
の記述を追加すると良いでしょう。server管理者がこのような 設定をしていなく、管理者にこの設定をお願いしても聞いてくれないのなら、 SSIを使うファイルがあるディレクトリに .htaccess という名の ファイルを作り、その中で
AddType text/x-server-parsed-html .shtml
と記述します。これはUNIXでの方法で他のOSでの方法は私は知りません。 もちろんserver管理者がSSIを禁止しているのならこうしてもSSIを 使うことはできません。

このような準備のもと、SSI命令を含むファイルはその拡張子を .shtml としてHTTPdにSSI命令の処理を明示します。


■ SSIの文法一覧

SSIの命令について解説します。SSIはCGIが登場するより前に表れた 機構なのでCGI程の自由な利用価値はないですがHTML文章のほんの一部だけを 毎回変更したいけれど、文章全部をCGI化するのはおおげさと思うときに使います。 SSIの命令には幾つかの種類があります。


▲ OSのコマンドを実行し、その結果をHTMLファイルに押入

HTMLファイルの押入したい場所に次のように記述します。

<PRE><!--#exec cmd="ls -l"--></PRE>
cmd=""の""の部分の文字列がOSのコマンドです。コマンドは絶対path指定でなければ 動かないこともあります。この例ではファイルの一覧を表示するlsコマンドを使って います。コマンドの出力結果は当然HTML的ではないので<PRE>をかけておきます。


▲ CGIを実行し、その結果をHTMLファイルに押入

HTMLファイルの押入したい場所に次のように記述します。

<!--#exec cgi="randimag.cgi"-->
cgi=""の""の部分の文字列がcgiのコマンドです。通例、数行の出力をだす 小型のCGIを使います。このCGIにHTMLタグ類を出力させてそれらをbrowserに 解釈させることはもちろん可能です。


▲ 環境変数の値を表示

<!--#echo var="DATE_GMT"-->
環境変数DATA_GMTの値が表示されます。 SSI特有の環境変数として以下の5種があります。
DOCUMENT_NAME HTMLファイルの名前
DOCUMENT_URI HTMLファイルのpath
QUERY_STRING_UNESCAPED 復元されたQUERY_STRING
DATE_LOCAL 地方時
DATE_GMT 世界時
LAST_MODIFIED ファイル最終更新日時


▲ 他ファイルを押入する

<!--#include file="signature.txt"-->
or
<!--#include virtual="/~naoki/CIPINTRO/CCGI/signature.txt"-->
他ファイルをこの位置に押入します。ファイルの指定には2種類ありfileでは HTMLファイルからの相対URL、virtualでは、そのwebサイトからの相対URLです。 例のようにsignatureを付け足すのに便利です。一つのファイルを変更するだけで 全HTMLファイルのsignatureを変更できるわけです。


▲ 指定ファイルのサイズを押入する

<!--#fsize file="signature.txt"-->
or
<!--#fsize virtual="/~naoki/CIPINTRO/CCGI/signature.txt"-->
それぞれ指定したファイルのディスク容量の数字を押入します。


▲ 指定ファイルの最終更新日時を押入する

<!--#flastmod file="signature.txt"-->
or
<!--#flastmod virtual="/~naoki/CIPINTRO/CCGI/signature.txt"-->
それぞれ指定したファイルの最終更新日時を押入します。


▲ SSIの日時の出力の書式を変更する

<!--#config timefmt="%Y年%m月%d日 %H時%M分%S秒"-->
こうすると、この後に続く日時関連の環境変数の出力や、ファイル更新時刻の 出力のSSIの書式が変更されます。この%Yなどの書式制御文字列にはいろいろある ようですが割愛させてもらいます。


▲ ファイルサイズの出力の書式を変更する

<!--#config sizefmt="bytes"-->
or
<!--#config sizefmt="abbrev"-->
ファイルサイズを出力するSSIの単位を変更します。bytesでバイト単位のファイル サイズの出力になり、abbrevでキロバイト単位の出力となります。


目次

Copyright(C) by Naoki Watanabe. Oct 21st, 1995.
渡辺尚貴 naoki@cms.phys.s.u-tokyo.ac.jp