SSI入門

基本的な SSI ディレクティブ

SSI ディレクティブは以下の文法で記述します:

<!--#コマンド名 引数名="引数値" -->

<!--#element attribute=value attribute=value ... -->

HTML のコメントのような書式をしているので、もし SSI を正しく動作可能にしなければ、ブラウザはそれを無視するでしょう。 しかし、HTML ソース中では見えます。もし SSI を正しく設定したなら、 ディレクティブはその結果と置き換えられます。

element はたくさんあるものから一つ指定することができます。 指定できるものの大多数については、次回もう少し詳しく説明します。 ここでは、SSI で行なうことができる例をいくつか示します。

SSIコマンド
コマンド 説明
config 時期、サイズ、エラーメッセージのフォーマットを設定する。
echo Webページに SSI変数の値を差し込む。
exec システムコマンドや CGIプログラムを実行し、その出力を Webページに差し込む。
fsize ファイルのサイズを Webページに差し込む。
flastmod ファイルの最終更新日付を Webページに差し込む。
include ファイルの内容を Webページに差し込む。
configコマンドの引数とその値
引数名 引数値
errmsg 任意のASCII文字のテキスト(日本語は使えない)
sizefmt bytes またはabbrev
timefmt 別表に掲げる日付コードのうちのどれか
日付の書式指定コード
コード 意味
%a 曜日を省略形で埋め込む。 (Sun, Mon, …)
%A 曜日をフルスペルで埋め込む。 (Sunday, Monday, …)
%b 月名を省略形で埋め込む。 (Jan, Feb, …)
%B 月名をフルスペルで埋め込む。 (January, February, …)
%c 現在のローケル(使用言語指定)にかなった形式で日時を埋め込む。
%d 日を数字で表わす。 (1〜31)
%m 月を数字で表わす。 (1〜12)
%U その年の第何週かを数字で表わす。 (年の最初の日曜が第1週)
%W その年の第何週かを数字で表わす。 (年の最初の月曜が第1週)
%w 曜日を数字で表わす。 (日曜が 0 になる)
%x 現在のローケル(使用言語指定)にかなった形式で日のみを埋め込む。
%y 年を最初の2桁を除いた西暦で表わす。 (00〜99)
%Y 年を4桁の西暦で表わす。
%H 時間を24時間形式で表わす。 (00〜24)
%I 時間を12時間形式で表わす。 (01〜12)
%j その年の第何日目かを数字で表わす。 (001〜366)
%M 分を数字で表わす。 (00〜59)
%p 現在のローケルに叶った形式で午前か午後を埋め込む。
%S 秒を数字で表わす。 (00〜59)
%X 現在のローケルに叶った形式で時刻のみを埋め込む。
%Z 時間帯の名前。(JST -- 日本標準時、GMT -- グリニッジ標準時など)
SSI環境変数とその意味
変数 意味
Data_Local ローカルな環境変数での現在に日付と時間を参照します。
Date_GMT グリニッジ標準時での現在の日付と時間を参照します。
Document_Name SSIを含んだサーバ解析HTMLのファイル名を参照します。
Document_URI その文書の URIをサーバのフルパスで参照します。
Last_Modified その文書の最終(最新)更新日を参照します。
HTTP_User_Agent クライアントのユーザエージェント名を参照します。
HTTP_Referer クライアントがそのページに来る前のページの URLを参照します。

今日の日付

<!--#echo var="DATE_LOCAL" -->

今日の日付Friday, 09-Jan-2009 22:25:47 JST

echo 要素は単に変数の値を出力します。 CGI プログラムに利用可能な環境変数の全ての セットを含む多くの標準変数があります。また、set 要素を用いることで、独自の変数を定義することができます。

出力される日付の書式が好きではない場合、その書式を修正するために、config 要素にtimefmt 属性を使用することができます。

<!--#config timefmt="%A %B %d, %Y" -->
Today is <!--#echo var="DATE_LOCAL" -->

Today is Friday January 09, 2009

URLの取得

この変数は当サイトではフッターで使用してます。すべてのページの最下段にこのページのURLとして表示してるのがこの機能です。

<!--#echo var="Document_URI" -->

このページのURL:http://web.okanos.com/employment/ssi2.shtm

ファイルの変更日

This document last modified <!--#flastmod file="index.html" -->

この要素もtimefmt フォーマットの設定に従います。

CGI プログラムの結果を取り込む

これは、全ての人のお気に入りである&nbsp;``ヒットカウンタ'' のような CGI プログラムの結果を出力する SSI のより一般的な使用のうちの一つです。

<!--#include virtual="/cgi-bin/counter.pl" -->

追加の例

以下は、SSI を使用して HTML ドキュメントにおいてできることのいくつかの特別な例です。

いつこのドキュメントは修正されたのか ?

先に、ドキュメントが最後に変更されたのはいつかを ユーザに通知するために SSI を使用することができることを述べました。 しかしながら、実際の方法は、いくぶん問題のままにしておきました。 HTML ドキュメントに配置された次のコードは、ページにそのような タイムスタンプを入れるでしょう。もちろん、上述のように、 SSI を正しく動作可能にしておく必要があります。

<!--#config timefmt="%A %B %d, %Y" -->
This file last modified <!--#flastmod file="ssi.shtml" -->

もちろん、ssi.shtmlの部分を実際の当該ファイル名と置き換える必要があります。もし、あらゆるファイルに張ることができる一般的なコードを探しているなら、これは不便であるかもしれません。おそらくその場合は、そうする代わりに変数LAST_MODIFIED を使用したいと考えるでしょう:

<!--#config timefmt="%D" -->
This file last modified <!--#echo var="LAST_MODIFIED" -->

This file last modified 03/06/08

timefmt 書式についてのより詳細については、お好みの検索サイトに行き、strftime で検索してみてください。文法は同じです。

標準のフッタを挿入する

もし数ページを超えるページを持つサイトを管理しているならば、 全ページに対して変項を行なうことが本当に苦痛となり得ることが 分かるでしょう。

全てのページに渡ってある種の標準的な外観を 維持しようとしているならば特にそうでしょう。

ヘッダやフッタ用の挿入用ファイルを使用することで、 このような更新にかかる負担を減らすことができます。

一つのフッタファイルを作成し、それをinclude SSI コマンドで各ページに入れるだけで済みます。

include 要素は、file 属性またはvirtual 属性のいずれかを使用してどのファイルを挿入するかを決めることができます。

file 属性は、カレントディレクトリからの相対パスで示されたファイルパスです。

それは / で始まる絶対ファイルパスにはできず、また、そのパスの一部に ../ を含むことができないことを意味します。

virtual 属性は、おそらくより便利だと思いますが、提供するドキュメントからの相対 URL で指定すべきです。

それは / で始めることができますが、 提供するファイルと同じサーバ上に存在しなくてはなりません。

<!--#include virtual="/footer.html" -->

私は最後の二つを組み合わせて、LAST_MODIFIED ディレクティブをフッタファイルの中に置くことがよくあります。

SSI ディレクティブは、挿入用のファイルに含ませたり、 挿入ファイルのネストをしたりすることができます。

すなわち、 挿入用のファイルは他のファイルを再帰的に挿入することができます。

ヘッダーとメニューをインクルードするイメージ

<div id="banner">
<!--#include virtual="/banner.shtm" -->
</div>

<div id="sidebar">
<!--#include file="sidemenu.htm" -->

</div>

SSIイメージ

NEXT

戻る


Webサイトを持とう

SEOアクセス向上

雑学

広告