SSI
SSIは"Server Side Include"の略です。CGIと同じような仕組みを持ち、パーティショニングはサーバーサイドです。
それ自体がプログラムであるCGIとは異なり、SSIはHTMLファイルに埋め込まれたコマンドをサーバーが実行し、結果を返します。
それ自体がプログラムであるCGIとは異なり、SSIはHTMLファイルに埋め込まれたコマンドをサーバーが実行し、結果を返します。
SSIを使うには
サーバーがSSIの使用を許可していることが条件です。CGIが使えるからといってSSIも、とは限りません。
- SSIを含むページの拡張子を.shtmlに限定
- .htaccessファイルが必要
書式
HTMLのコメントタグと同じで、"<!--" に始まり "-->" で終わります。ひとつの開閉の間に、コマンドをひとつだけ書き込むことができます。
例)<!--#echo var="DATE_LOCAL"-->
コマンドとオプション
SSIコマンド
- config → 返された値の表示形式を設定
- echo → HTMLにSSIの変数値を埋め込む
- exec → CGIやコマンドを実行し、戻り値を受ける
- fsize → ファイルサイズをページに埋め込む
- flastmod → ファイルの最終更新日をページに埋め込む
- include → ファイルの内容をページに埋め込む
configコマンドのオプション
- errmsg → 任意のASCIIコードテキスト
- sizefmt → bytesまたはaddrevで表示
- timefmt → 日付書式コードを任意に指定
日付書式コードと表示例
- %Y, %y → 年 (2001, 01)
- %b, %B → 月 (Jan, January)
- %m → 月 (02) 数字表記
- %d, %e → 日 (01, 5)
- %c → 日時 (Fri Feb 02 19:39:12 2001)
- %C → 年月日 (Sunday Febrary 4 2001)
- %D → 月/日/年 (02/17/01)
- %a, %A → 曜日 (Sun, Sunday)
- %H, %I → 時 (05) 24時間制と12時間制
- %l, %k → 時 (5) 24時間制と12時間制
- %M → 分 (45)
- %S → 秒 (34)
- %r → 時:分:秒 (7:56:41) 12時間制
- %T → 時:分:秒 (19:56:41) 24時間制
- %R → 時:分 (19:56) 24時間制
- %P → AM/PM (AM)
- %j → その年の1月1日からの経過日数
- %U → その年の経過週数(何週目か)
- %W → その年の経過週数(月曜日を週の始点で計算)
- %Z → タイムゾーン (GMT)
echoコマンドで指定できる変数
- DATE_GMT → GMTの現在時刻
- DATE_LOCAL → サーバーが置かれた地域の標準時
- DOCUMENT_NAME → HTMLファイル名
- DOCUMENT_URL → HTMLファイルのURL
- LAST_MODIFIED → 最終更新日
書式を指定する方法
日時や日付など、時間の経過に関わる情報を表示させる場合、欲しいデータだけを指定することができます。
<!--#config timefmt="%m月%d日"--> <!--#echo var="DATE_LOCAL"-->拾うデータの指定には、上記の日付書式コードを使用します。
CGIを実行する
HTML文書に埋め込んだSSIによって、CGIを起動させることができます。CGIがSTDOUTに出力した結果は、SSIを記述した部分にHTMLで置き換えられます。
例) <!--#exec cmd="./count.pl"-->
別のHTMLファイルを埋め込む
includeコマンドを使用して、別のファイルをページ上に埋め込むことができます。
新規ページ作成時の手間と、サーバー資源の節約にもなります。
例)今日のひとことインラインフレームを使用するという手もありますが、これはIEのみのサポートですのでNNユーザーは困ります。SSIなら誰も困りません。
<!--#include file="./hitokoto.html"-->
<html><body> <!--#include file="./head.html"-> 〜以下本文〜各ページのヘッダ(やフッタ)だけを書き込んだファイル(例えばhead.html)を保存しておけば、SSIで呼び出すことで、全てのページに同じ内容を食わせることができます。
新規ページ作成時の手間と、サーバー資源の節約にもなります。
[ SSI Top ]
[ BACK ]
[ Reference Top ]
[ NEXT ]
[ HOME ]