<!--#exec ...--> で上位ディレクトリアクセスや引数受け渡しができないことがある旨を追記。(2000.3.3)
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 にしなくてはならないプロバイダもあります。
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 を修正してもそれをブラウザで確認できない場合があるようです。そのときは一度、ブラウザのキャッシュをクリアしてから再確認してください。
- 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 23 時(24時間制) %I 11 時(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="..."--> で指定したフォーマットに従います。
指定したファイルを読込んで表示します。file="〜" の 〜 にはファイル名を指定します。../ や絶対パス名は使用できない場合があります。virtual="〜" の 〜 には指定するファイルの仮想パス名(「http://サーバー名/パス名」の「/パス名」の部分)を指定します。<!--#include file="header.html"--> : <!--#include file="footer.html"-->
指定したファイルのサイズを表示します。表示のフォーマットは <!--#config sizefmt="..."--> で指定したものに従います。file="〜" と virtual="〜" の説明は #include と同様です。<!--#config sizefmt="abbrev"--> <A HREF="xxx.zip">ダウンロード</A> (サイズ:<!--#fsize file="xxx.zip"-->)
指定したファイルの最終更新時刻を表示します。表示のフォーマットは <!--#config timefmt="..."--> で指定したものに従います。file="〜" と virtual="〜" の説明は #include と同様です。最終更新日:<!--#flastmod file="this.html"-->
〜 で指定したコマンドや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)コマンド実行時のカレントディレクトリが異なる・・・などの違いがあるようですので、注意してください。