とほほのSSI入門

とほほのWWW入門 > とほほのSSI入門
2000年3月3日版
<!--#exec ...--> で上位ディレクトリアクセスや引数受け渡しができないことがある旨を追記。(2000.3.3)

目次

SSIとは?

SSIとはServer Side Includeの略です。HTML文書中に以下のようなコメントを挿入することにより、サーバー側がコメントの場所に実行コマンドの結果などを置き換えてくれたりする機能です。
    <!--#exec cmd="/bin/ls"-->

SSIに関する詳細仕様は以下のURLを参照してください。

http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html

SSIを使用することにより、たとえば次のようなことができます。

SSIの使用準備

SSIを使用するには、以下のことを確認してください。

.htaccessの設定

WebサーバーがApacheの場合でSSIを使用するには、HTML文書を置くディレクトリに .htaccess というファイルを作成し、その中で次のように記述します。
    AddType text/x-server-parsed-html .shtml
これで、.shtml という拡張子のファイルにおいてSSIが使用できるようになります。.html というファイルにもSSIを有効にしたい場合は
    AddType text/x-server-parsed-html .shtml .html
のように記述してください。 SSIを使用するファイルの拡張子を .shtml にすることは面倒な反面、次のメリットがあります。 ※ Netscape Navigatorの場合はキャッシュがききすぎて、 .htaccess を修正してもそれをブラウザで確認できない場合があるようです。そのときは一度、ブラウザのキャッシュをクリアしてから再確認してください。

SSIの使用例

ファイルの最終更新時刻を表示します。
このファイルは
<!--#config timefmt="%Y/%m/%d %X"-->
<!--#echo var="LAST_MODIFIED"-->
に更新されました。
ダウンロードファイルの最終更新日とサイズを表示します。
ダウンロードは
<A HREF="xxx.zip">xxx.zip</A>
(<!--#config timefmt="%Y/%m/%d"-->
<!--#flastmod file="xxx.zip"-->更新,
<!--#config sizefmt="abbrev"-->
<!--#fsize file="xxx.zip"-->)
を読込んでください。
ヘッダ/フッタを指定します。
<HTML>
<HEAD>
<TITLE>Sample Page</TITLE>
</HEAD>
<BODY>
<!--#include file="header.html"-->
本文
<!--#include file="footer.html"-->
</BODY>
</HTML>
カウンターを実現します。
SSIカウンター設置法」を参照してください。

<!--#config sizefmt="〜"-->

#fsizeコマンドなどで表示されるファイルサイズのフォーマットを指定します。〜 に bytes を指定するとバイト単位で、abbrev を指定すると Bytes, KBytes, MBytes などの適切な単位で表示されるようになります。

<!--#config timefmt="〜"-->

#echoコマンドなどで時刻を表示する際のフォーマットを指定します。〜 には %Y/%m/%d %H:%M:%s などの文字列を指定します。 %Y や %m は次のような意味を持ちます。

置換文字表示例意味
%c10/30/97 11:22:33月/日/年 時:分:秒
%x10/30/97月/日/年
%X11:22:33時:分:秒
%y97年(2桁)
%Y1997年(4桁)
%bOct月(3文字)
%BOctober月(フルスペル)
%m08月(2桁)
%aSat曜日(3文字)
%ASaturday曜日(フルスペル)
%d30日(2桁)
%j2231月1日からの日数
%w6日曜日からの日数
%pPMAMもしくはPM
%H23時(24時間制)
%I11時(12時間制)
%M44
%s56
%ZJSTタイムゾーン

<!--#config errmsg="〜"-->

文書処理中にエラーが発生した場合のエラーメッセージを指定します。これはWWWサーバーのエラーログにも記録されます。

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

指定した環境変数の値を表示します。〜 には LAST_MODIFIED などの環境変数名を指定します。環境変数名には次のようようなものがあります。

環境変数意味
DOCUMENT_NAMEこの文書のファイル名(wwwssi.htm)
DOCUMENT_URI文書の仮想パス名(/~s-hasei/wwwssi.htm)
QUERY_STRING_UNESCAPEDWWWクライアントから検索用に送信された文字列。いくつかの記号文字(UNIXのシェルのメタ文字)はパックスラッシュ( \ )でエスケープされているので注意。
DATE_LOCAL現在の時刻(ローカル時刻)
DATE_GMT現在の時刻(グリニッジ標準時)
LAST_MODIFIEDこの文書の最終更新時刻

サーバーによっては、「CGIスクリプトが参照可能な環境変数」も表示できます。時間の表示は <!--#config timefmt="..."--> で指定したフォーマットに従います。

<!--#include file="〜"-->
<!--#include virtual="〜"-->

指定したファイルを読込んで表示します。file="〜" の 〜 にはファイル名を指定します。../ や絶対パス名は使用できない場合があります。virtual="〜" の 〜 には指定するファイルの仮想パス名(「http://サーバー名/パス名」の「/パス名」の部分)を指定します。
    <!--#include file="header.html"-->
              :
    <!--#include file="footer.html"-->

<!--#fsize file="〜"-->
<!--#fsize virtual="〜"-->

指定したファイルのサイズを表示します。表示のフォーマットは <!--#config sizefmt="..."--> で指定したものに従います。file="〜" と virtual="〜" の説明は #include と同様です。
    <!--#config sizefmt="abbrev"-->
    <A HREF="xxx.zip">ダウンロード</A>
    (サイズ:<!--#fsize file="xxx.zip"-->)

<!--#flastmod file="〜"-->
<!--#flastmod virtual="〜"-->

指定したファイルの最終更新時刻を表示します。表示のフォーマットは <!--#config timefmt="..."--> で指定したものに従います。file="〜" と virtual="〜" の説明は #include と同様です。
    最終更新日:<!--#flastmod file="this.html"-->

<!--#exec cmd="〜"-->
<!--#exec cgi="〜"-->

〜 で指定したコマンドやCGIを実行し、その結果を表示します。
    <!--#exec cmd="/bin/ls"-->
    <!--#exec cgi="./cgi-bin/count.cgi"-->

cgi="..." で呼び出す際は、CGI側で Content-type: text/html などのヘッダを出力してやる必要があります。

引数(arg1, arg2, ...)を指定する際は、cmd="/bin/xxx arg1 arg2" などのようにスペースで区切って指定します。(perlで引数を受け取るには @ARGV を参照します。)

サーバーの種類やバージョンによっては、(1)コマンド名に絶対パスを指定できない、(2)パス名で上位のディレクトリ(..)を参照できない、(3)コマンドの引数を渡せない、(4)コマンド実行時のカレントディレクトリが異なる・・・などの違いがあるようですので、注意してください。


Copyright (C) 1996-1999 とほほ
http://wakusei.cplaza.ne.jp/twn/wwwssi.htm