WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:SSIをCGIでもつかいたいのですが

0:[投稿] うめこ [2003/01/17 21:36 ][環境:IE5.5 WIN98 CGI perl]

今作成しているサーバーはSSI可で、普通のHTMLページはSSIを組み込んで、ヘッダ・フッターを表示させています。
<!--#include virtual="/**/head.html"-->   

一部にフリーのCGIのページがあるんですが、この上下にもヘッダ・フッターをつけるには、どうしたらいいのでしょう?

ヘッダ部分の記載を見つけたのですが、HTMLと同じようにかいてみましたが、無理でした…。
よろしくお願いします。


1:[回答] ぴょんきち [2003/01/18 03:03 ]

使っているCGIのなかに、

sub include{
my $sub_file = shift;
open(IN, "$ENV{'DOCUMENT_ROOT'}$sub_file") || return qq(<!-- Open Error -->);
while(<IN>){
 print;
}
close(IN);
}
を追加して、そのCGIのヘッダー・フッターを出力したい個所で
<!--#include virtual="/**/head.html"--> の部分で、
&include('/**/head.html');
とすればお好みの動作になります。
#include virtual のシュミレーション


2:[質問] うめこ [2003/01/20 19:50 ]

さっそくありがとうございます。

言われたとおりにしてみたのですが、
&include('./**/head.html');
とそのまま表示されてしまいました。

CGIにはいろいろなファイルがあって、ヘッダ部分は別ファイルになっていますが、フッタは同じファイルなので、
フッタでチャレンジしています。

上をコピペすると最後に空スペースがはいるのでそれも削除しましたが無理でした。
なにか考えられる事はありますでしょうか
よろしくおねがいします


3:[回答] gun [2003/01/21 10:49 ]

WEBサーバの設定は、CGI(拡張子".cgi")からでもSSIを使用可能になっているのでしょうか?
借りているサーバのHPに、そのことが記述されいませんか?


4:[回答] gun [2003/01/21 11:28 ]

あ。
ごめんなさい。
投稿を良く読んでいませんでした。
>>3 のことは忘れてください m(_~_)m


5:[回答] gun [2003/01/21 11:41 ]

>>2 についての推測ですが、
下記の様な記述の間に、&include('./**/head.html'); を追記して
しまったのではないでしょうか。
--------------------------------
print<<何かの文字列(例:_hogehoge_);
    :
_hogehoge_
--------------------------------
これはまとめ書き出しの文ですので、&include('./**/head.html');は
_hogehoge_を分割して、この外に挿入せねばなりません。
--------------------------------
print<<_hogehoge1_);
    :(前部)
_hogehoge1_

&include('./**/head.html');

print<<_hogehoge2_);
    :(後部)
_hogehoge2_
--------------------------------


6:[回答] うめこ [2003/01/23 15:03 ]

gunさん、ありがとうございます。
はじめは??でしたが、CGIとにらめっこしてやっとわかりました。
ご推測のとおり、ヘッダのなかのテーブルに書き込んでいました。

おっしゃるとおりに、外に出してみたら表示はされたんですが、
画像がすべて×になってしまいます。

TOP ─cgi-bin(フォルダ)
    └各ページ
  ─ssi(フォルダ)
    └imege(フォルダ)→素材
    └head.html
    └foot.html

なのですが、
&include('/ssi/topmenu.html');
&include('./ssi/topmenu.html');

どちらでも同じように画像は×になります。
引き続きお願いします。
     


7:[回答] やじうま1号 [2003/01/23 15:21 ]

&include('../ssi/topmenu.html');
ではないでしょうか。
..と言うのは一個上の階層、.と言うのは現在の階層をさします。


8:[質問] うめこ [2003/01/23 18:01 ]

やじうま1号さん、早速有難うございます。
すみません。私の勘違いで、ディレクトリを見直したら全然違いました。
TOP ─cgi-bin(フォルダ)
    ├CGIファイル  ←ぴょんきちさんのいわれたものを記載
    └フォルダA  
      ├ここに既存のheadのファイル
      └フォルダB
       └ここにヘッダを表示したいファイルが多数
                   (*.html)
  ─ssi(フォルダ)
    └imege(フォルダ)→素材
    └head.html
    └foot.html

各htmlファイルにもともと記述されているのは

<!---HTML--->
&_Html_Head;
print <<"<!---HTML--->";

です。
これで、どう組み込めば良いかわかりますでしょうか?
私は、
<!---HTML--->
&include('./ssi/head.html');
&_Html_Head;
print <<"<!---HTML--->";

として、画像が×になっている状態です。
何度もすみませんがよろしくお願いします


9:[回答] ぴょんきち [2003/01/24 11:55 ]

head.html 自体は表示されるのでしょうか?

その上でhead.html内で記述した画像が表示されないのなら
head.htmlでの<IMG>の画像のパスは、呼び出すcgiからのパスになります。

cgiがうまく呼び出しに成功してhead.htmlを表示する事と、
画像が表示出来ないことは別の問題です。


10:[質問] うめこ [2003/01/24 14:18 ]

ぴょんきちさん、何度も有難うございます。

>head.html 自体は表示されるのでしょうか?

はい、されています。
CGIと、普通のHTMLファイルのフォルダが違うので
ソースのパスを見て、確かに×になるのはわかりました。

そこで、絶対パスにしてみたら、画像も表示されました!
今回は本当にいろいろ勉強になりました。
回答いただいたぴょんきちさん、gunさん、やじうま1号さん
ありがとうございました!


11:[完了] うめこ [2003/01/24 14:20 ]

すみません
状態を間違えました。それだけです。
解決しましたので、「完了」にさせていだたきます。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World