Perl/ActivePerl For UNIX/Linux/Windows
 
TryThe Homepage
初めてのCGI
CGI 研究室
ダイナミックCGI
ダウンロード
サービス
サーバ構築(Windows)
データベースアクセス
有料サービス
FAQ
お問い合わせ
このページを印刷
SSIのすすめ
SSIとは、サーバサイドインクルード(ServerSideInclude)簡単に言えばサーバがページを出力する前に、 指定したドキュメントをページに挿入してくれる機能です。挿入するドキュメントがCGIや、 プログラムなら実行結果を挿入する事ができる大変便利な機能です。一般的なプロバイダでは、 サーバの動作が重くなる事や、一人のユーザが謝ったプログラムを実行させると多くの会員に迷惑をかける事、 また、セキュリティ上の問題からほとんどが禁止しています。今回はご自分のサーバですので自由に使用する事ができます。 もちろん、ただドキュメントを挿入するだけでも便利なのですが、どうせ使用するならCGIを実行させ、 結果を挿入する事にも挑戦しましょう。
  SSIの準備
Perlのインストールのコーナーでも説明しましたが、 CGIを実行させるには.htaccessという特殊なファイルに宣言を記述する必要がありました。 SSIも同様に.htaccessに記述して許可する必要があります。 一般的な.htaccessを 許可するフォルダにコピーするだけで使用する事ができます。
AddType text/x-server-parsed-html .htm
AddType text/x-server-parsed-html .shtm
AddType text/x-server-parsed-html .html
AddType text/x-server-parsed-html .shtml
AddType application/x-httpd-cgi .cgi
AddType application/x-httpd-cgi .pl
AddType application/x-sh .sh
AddType audio/x-midi .mid
AddType audio/midi .mid
AddType audio/x-pn-realaudio .ra
この上部4行がSSIの設定で、拡張子がhtm、shtm、html、shtmlの場合 ドキュメント内にSSIが記述それていればSSIを実行しなさいという意味です。 もちろん、.htaccessの記述はApacheのコンフィグレーションファイル(httpd.conf)に記述することもできますので、 ディレクトリ作成時に、
#===================================================
Alias /www/ "C:/www/"
<Directory "C:/www">
  AllowOverride All
  Options All
  AddType text/x-server-parsed-html .htm
  AddType text/x-server-parsed-html .shtm
  AddType text/x-server-parsed-html .html
  AddType text/x-server-parsed-html .shtml
  AddType application/x-httpd-cgi .cgi
</Directory>
#===================================================
このように記述しておけば.htaccessは必要なくなります。 新しいページを発信する場合は、httpd.confにこのように記述すれば簡単にCGI、SSIを許可できます。
  テキストの挿入
テキストの挿入
すべてのページに同じタグを挿入したい場合、2〜3ページならそのまま書いてもたいした手間ではありませんが、 数十ページもあり、それらが変更されると、すべてのページに同じ変更をしなければならなくなります。 SSIを利用すれば、挿入するタグだけをテキストファイルとして保存しておき、ページが表示されるときに挿入できます。 このページもSSIを使用してテキストを挿入しています。
  1. 最初は、ページ本体の輪郭を作成します。
    もちろん、ここに本文を書いていただいても結構です。
  2. 挿入するメニューを作成する
    このファイルは、HTMLの一部分ですので拡張子は.htmでなく.txtでもかまいません。
  3. 輪郭ページにSSIを1行挿入すると
    <td valign="top" width="172">
    <!--#include virtual="ssisample02.htm"-->
    </td>
    ソースをご覧いただければおわかりですが、ssisample01.htmとssisample03.htmの違いは、
    <!--#include virtual="ssisample02.htm"-->
    この行が存在するか、これだけでメニューを挿入することができます。
  CGIの挿入
テキストを挿入するだけでこれだけ便利なのですが、CGIを挿入すればさらに高度な事が簡単に行えます。
CGIを挿入するSSIで最も知られているのがアクセスカウンタです。
ここではCGIでアクセスカウンターを作成してSSIでページに挿入してみましょう。
  1. カウンターCGIの作成
    SSI用ログカウンタをダウンロードしてCGIが実行できるディレクトリに保存します。
    CGIは環境に合わせ設定する必要がありますのでテキストエディタで開きます。
    #!/usr/local/bin/perl
    # ↑あなたが加入しているプロバイダの「perl」言語が使用できる
    # パスを指定します。一般的に「#!/usr/local/bin/perl」で大丈夫

    require '/usr/lib/perl-lib.pl';
    #==================================================
    # logcounter Version 2001.11 SSI専用
    #==================================================
    #ログファイル
    $datafile = 'logcnt.dat';
    #------------------------------------------
    #メインカウンタに使用するカウント画像のフォルダ
    $main_img_dir = 'counter/image6/';
    #------------------------------------------
    #サブカウンタの表示=1/非表示=0
    $subcounter = 0;
    #サブカウンタに使用するカウント画像のフォルダ
    #画像を使用しない場合はヌル''にする
    $sub_img_dir = 'counter/image1/';
    #------------------------------------------
    #ログを記録する日数 極端に大きくすると重くなる
    $max = 31;
    #------------------------------------------
    #世界標準時との時差 日本の場合は9時間
    #日本時間に設定されているサーバは0にする
    $timelag = 9;
    #==================================================
    # 初期設定が必要なのはここまでです。
    #==================================================
    perl-lib.plも必要ですので必ずダウンロードしておいてください。
  2. SSIを挿入する
    それでは先程のssisample03.htmの本文にSSIを挿入してみましょう。
    <td bgcolor="#FFFFFF" align="center">
    <!--#include virtual="counter/logcnt.cgi"-->
    <br>
    これでカウンターが挿入されています。
  3. 最終更新日の挿入
    もう1つ、当サイトでも使用していますが、それぞれのページの最終更新日を自動的に挿入するスクリプトです。
    CGIは非常に簡単で、特に変更する箇所もありません。
    後は、全てのページにSSIを挿入するだけです。
    <!--#include virtual="ssisample05.htm"-->
    ご覧のようにSSIの挿入字には、CGIにページのファイル名をパラメータとして付けています。
    こちらが挿入された最終更新日です。
Copyright 2004 Terra. All rights reserved. No reproduction or republication without written