SSIとはServer Side Includeの略です。HTML文書中に以下のようなコメントを挿入することにより、サーバー側がコメントの場所に実行コマンドの結果などを置き換えてくれたりする機能です。<!--#exec cmd="/bin/ls"-->SSIに関する詳細仕様は以下のURLを参照してください。
http://hoohoo.ncsa.uiuc.edu/docs/tutorials/includes.html
SSIを使用することにより、たとえば次のようなことができます。
- すべてのファイルに同じヘッダやフッタを表示することが簡単になる。
- ファイルの最終更新時刻やサイズを自動的に表示できるようになる。
- 外部コマンドの実行結果をページ中に表示できるようになる。
- カウンターもつくれる。
SSIを使用するには、以下のことを確認してください。
- WWWサーバーがSSIをサポートしていること。 NCSA httpd や Apache ではサポートされていますが、CERN httpd ではサポートされていません。
- プロバイダがSSIの使用を禁止していないこと。 セキュリティの面から、使用をサポートしていないプロバイダも多いようです。
- .htaccess というファイルを設定する必要のある場合もあります。
- SSIを使用するHTML文書の拡張子を .shtml にしなくてはならないプロバイダもあります。
NCSA httpd や Apache というサーバーソフトの場合でSSIを使用するには、HTML文書を置くディレクトリに .htaccess というファイルを作成し、その中で次のように記述します。AddType text/x-server-parsed-html .shtmlこれで、.shtml という拡張子のファイルにおいてSSIが使用できるようになります。 .html というファイルにも有効にしたい場合はAddType text/x-server-parsed-html .shtml .htmlのように記述してください。 SSIを使用するファイルの拡張子を .shtml にすることは面倒な反面、次のメリットがあります。
- WWWサーバーは .shtml という拡張子のファイルのみ処理すればよくなり、負荷が軽くなる。
- 悪意を持った利用者がHTML使用可能な掲示板に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カウンター設置法」を参照してください。
#fsizeコマンドなどで表示されるファイルサイズのフォーマットを指定します。〜 に bytes を指定するとバイト単位で、abbrev を指定すると Bytes, KBytes, MBytes などの適切な単位で表示されるようになります。
#echoコマンドなどで時刻を表示する際のフォーマットを指定します。〜 には %Y/%m/%d %H:%M:%s などの文字列を指定します。 %Y や %m は次のような意味を持ちます。
置換文字 表示例 意味 %c 10/30/97 11:22:33 月/日/年 時:分:秒 %x 10/30/97 月/日/年 %X 11:22:33 時:分:秒 %y 97 年(2桁) %Y 1997 年(4桁) %b Oct 月(3文字) %B October 月(フルスペル) %m 08 月(2桁) %a Sat 曜日(3文字) %A Saturday 曜日(フルスペル) %d 30 日(2桁) %j 223 1月1日からの日数 %w 6 日曜日からの日数 %p PM AMもしくはPM %H 11 時(24時間制) %I 23 時(12時間制) %M 44 分 %s 56 秒 %Z JST タイムゾーン
文書処理中にエラーが発生した場合のエラーメッセージを指定します。これはWWWサーバーのエラーログにも記録されます。
指定した環境変数の値を表示します。〜 には LAST_MODIFIED などの環境変数名を指定します。環境変数名には次のようようなものがあります。
環境変数 意味 DOCUMENT_NAME この文書のファイル名(wwwssi.htm) DOCUMENT_URI 文書の仮想パス名(/~s-hasei/wwwssi.htm) QUERY_STRING_UNESCAPED WWWクライアントから検索用に送信された文字列。いくつかの記号文字(UNIXのシェルのメタ文字)はパックスラッシュ( \ )でエスケープされているので注意。 DATE_LOCAL 現在の時刻(ローカル時刻) DATE_GMT 現在の時刻(グリニッジ標準時) LAST_MODIFIED この文書の最終更新時刻 サーバーによっては、「CGIスクリプトが参照可能な環境変数」も表示できます。時間の表示は <!--#config timefmt="..."--> で指定したフォーマットに従います。
指定したファイルを読込んで表示します。ただし、CGIスクリプトを指定することはできません。file="〜" の 〜 にはファイル名を指定します。../ や絶対パス名は使用できない場合があります。 virtual="〜" の 〜 には指定するファイルの仮想パス名(「http://サーバー名/パス名」の「/パス名」の部分)を指定します。
指定したファイルのサイズを表示します。表示のフォーマットは <!--#config sizefmt="..."--> で指定したものに従います。file="〜" と virtual="〜" の説明は #include と同様です。
指定したファイルの最終更新時刻を表示します。表示のフォーマットは <!--#config timefmt="..."--> で指定したものに従います。file="〜" と virtual="〜" の説明は #include と同様です。
〜 で指定したコマンドを実行し、その結果を表示します。引数(arg1, arg2, ...)を指定する際は、cmd="xxx.ssi arg1 arg2" のようにスペースで区切って指定します。(perlで引数を受け取るには @ARGV を参照します。)
〜 で指定したCGIスクリプトを実行してその結果を表示します。 cmd="..." と異なるのは以下の3点です。
- コマンドを仮想パス名で指定しなくてはならない。
- コマンドはCGIスクリプトなので、CGIヘッダ(Content-type: text/html など)を出力しなくてはならない。
- コマンド実行時のカレントディレクトリが異なる。 cmd="..."の場合はHTML文書のディレクトリ、cgi="..."の場合はCGIスクリプトのディレクトリになる。