めざせ、HTMLの鉄人!

「HTML教室」(SSI篇)

まずは、次の HTML ファイルを作って、それを update.shtml として保存してみてください。

<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
   <TITLE>SSI Test Page
</TITLE>
</HEAD>
<BODY>
Last updated: <!--#echo var="LAST_MODIFIED"-->
</BODY>
</HTML>
これを、localhost から見ると、Last updated: Tuesday, 25-Dec-2001 20:30:40 PST などと、画面に表示されるはずです。CGI 同様、ファイルをオープンしても駄目です。HTTP サーバーを通さなければなりません。サーバーが <!--#echo var="LAST_MODIFIED"--> と記入した部分を解釈して、update.shtml が更新された年月日と時刻を書き込んでくれるのです。この機能を Server Side Include (SSI) と言い、そして、サーバーに、解釈の必要なコメントを埋めこんであるファイルであることを知らせるのが、.shtml というファイルハンドル名だったのです。

localhost で SSI を動かすには、SSI のファイルハンドラーを .shtml とすること、そして、SSI を使うことのできるディレクトリを指定する必要があります。Vine Linux の httpd では .shtml はすでに定義されていましたので、私の使っているディレクトリ /home/httpd/ 以下で、SSI を使うことができるように、 ExecCGI の次に Includes を付け加えました。もちろん、このファイルは httpd.conf です。

#
# "/home/httpd/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory /home/httpd/*>
    AllowOverride None
    Options ExecCGI +Includes
    Order allow,deny
    Allow from all
</Directory>
httpd.conf を書き換えたら、かならずサーバーを restart しなければなりません。そうでないと、設定が反映されません。ルート権限で /etc/rc.d/init.d/httpd restart あるいは /usr/local/apache/bin/apachectl restart をコマンドラインに打ち込みます。

SSI のコマンドは、多くはなく、次の六つです。それぞれのコマンドに例をあげておきます。

コマンド 意味
<!--#echo var="xxx"--> <!--#echo var="LAST_MODIFIED"--> ファイルの更新年月日を表示する
<!--#flastmod file="xxx"--> <!--#flastmod file="news.html"--> news.html の更新年月日を表示する
<!--#fsize file="xxx"--> <!--#fsize file="manual.pdf"--> manual.pdf のファイルサイズを表示する
<!--#inclue file="xxx"--> <!--#include file="menu.html"--> menu.html の内容を表示する
<!--#config sizefmt="xxx"(ファイルサイズの形式) timefmt="xxx"(年月日と時刻の形式) errmsg="xxx"(エラーメッセージの形式)--> <!--#config timefmt="%Y年%m月%d日"--> 年月日を2001年12月25日のように表示する
<!--#exec cgi="xxx"(cgi の実行) cmd="xxx"(シェルコマンドの実行)--> <!--#exec cgi="fortune.pl"--> fortune.pl という cgi を実行して結果を表示する。

上記の #config を使って、最初の update.shtml を少し変えてみましょう。赤字の部分を追加しました。

<HTML>
<HEAD>
   <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=EUC-JP">
   <TITLE>SSI Test Page
</TITLE>
</HEAD>
<BODY>
<!--#config timefmt="%Y年%m月%d日"-->
Last updated: <!--#echo var="LAST_MODIFIED"-->
</BODY>
</HTML>
こうすると、更新された日付が「2001年12月25日」などと、画面に表示されます。

アップデート情報を、トップページに出すと、ホームページを訪れた人に興味を持ってもらえるかもしれません。news.html を更新すると、index.shtml に自動的にその更新年月日を表示させるには、つぎのようにすると良いでしょう。

<!--#config timefmt="%Y年%m月%d日%I:%M%p"-->
<table>
<tr><td>更新年月日</td><td>記事名</td></tr>
<tr><td><!--#flastmod file="news.html"--></td><td><a href="news.html">ペンギンニュース</a></td></tr>
</table>


[INDEX]