• ベストアンサー

SSI対応じゃないCGIをSSI対応に…

ホームページに更新記録CGIを設置しているところです。 それ自体はIFRAMEでページに表示させるタイプで、現在ちゃんと動作しています。 しかし1つ問題が…ちょっとページデザインを換えようと思っているのです。 素材配布ページなんですけど、上に一覧の入り口を表で作り、その表の幅を600に設定しました。 その下に同じようなデザインで更新記録CGIをIFRAME表示させようとしました。 しかし、なぜか微妙に左にずれています。更新記録CGIの表はもちろん600に設定しています。IFRAMEの方はスクロールバー分ずれるだろうと思いちょっと広め(680)にして、IFRAME自体はセンターへ、中の表示も中央に設定しました。でも、ずれてしまいます。 この方法をどうにかする方法があればうれしいのですが、どうせならSSIで表示できないかと考えました。これだとセンター表示されるのでは?でも、スクロールはどうなるのかな…際限なく(CGIの表示設定数)表示されるんですかね。 で、現在使っている物がSSI対応じゃないCGIのようです。これをSSI表示させることは可能でしょうか? サーバのほうは、SSI表示OKでした。 私自身はCGIを0から作ることは出来ませんが、ある程度の改造をすることは可能です。私が出来る(理解できる)かどうかは逐一答えて行きたいと思っています。 何か良い方法がありましたら教えてください。

  • CGI
  • 回答数3
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • duckling
  • ベストアンサー率47% (88/185)
回答No.3

> htmlになんと書けばいいのですか? <!--#exec cmd="プログラムのパス"--> ↑これを書いたところに、プログラムから出力される文字が表示されます。 ただ、SSI対応のサーバでは、ファイル名を ○○.html ではなく、 ○○.shtml にしなければならない場合がありますので その辺りはパーミッション云々も含めて、 サーバの設定に従ってください。 インクルードされるプログラムの方は ○○.cgi でも動く場合がありますし、 ○○.pl にしないと動かない場合もあります。 その辺もサーバの設定で。 > 何か法則があるのなら…と思って質問してみました。 print "Content-type: text/html;\n\n"; ↑これを削除する理由は、 HTML側ですでに、text/htmlが出力されることになっているからです。 なので、この文章は要らない、という意味で、1行かどうかは分かりません。 2、3行あったら全部削除して下さい。(笑

master-3rd
質問者

お礼

ありがとうございます。何とかできました。 まず、CGIの方は「print "Content-type: text/html;\n\n"; 」も、ですが、スタイルシートの設定、BODY表記なども重複していたので消去しました。 で、htmlの方ですが、ご指摘のとおりshtmlでしか動きませんでした。 また、shtmlと同じフォルダにCGIが無いと動作しませんでした。←これに1時間ほど悩みました。初心者泣かせだなぁ… とりあえず完成しました。 ありがとうございます。

その他の回答 (2)

  • duckling
  • ベストアンサー率47% (88/185)
回答No.2

IFRAMEの中に表示するのであれば、 CGIでやって理想通りに表示されないものは SSIでやったところで理想通りには表示されません。 IFRAMEの中ではなく、その部分にSSIで表示したい、というのであれば、 スクロールはもちろんなく、全部が表示されることになります。 それでもSSIにしたい、という場合は、 CGIの中の print "Content-type: text/html;\n\n"; を削除すれば動く可能性はありますが、 そのプログラムのソースが無いことには断言は出来ません。

master-3rd
質問者

補足

素早い回答ありがとうございます。 >IFRAMEの中ではなく、その部分にSSIで表示したい あ、もちろんそうです。IFRAMEを使わなくて良いようにと考えSSIではと思いつきましたから。 >スクロールはもちろんなく、全部が表示されることになります。 やっぱりスクロールは無理ですか… >print "Content-type: text/html;\n\n"; これはCGIの中のヘッダーの1文でいいのですね。 >そのプログラムのソースが無いことには断言は出来ません。 もちろんそのとおりだと思います。ただ、何か法則があるのなら…と思って質問してみました。 で、最終的にどうしたら良いのでしょうか?htmlになんと書けばいいのですか? 再度お願いします。

  • panda0000
  • ベストアンサー率35% (59/165)
回答No.1

iframe のSCROLLING="no"にしてしまうことで、スクロールバー分のずれは解消できると思いますが、 スクロールバーがないと不都合のCGIなのでしょうか。 SSIで表示させる場合、ヘッダの出力は必要ありませんので、 print "Content-Type: text/html; charset=Shift_JIS\n\n"; のような記述は不要です。 それ以外の修正は実際見てみないとわからないのですが、 とりあえず、なにも改造しないままSSIで呼び出してみてはいかがでしょうか。

master-3rd
質問者

補足

素早い回答ありがとうございます。 >スクロールバーがないと不都合のCGIなのでしょうか。 ┌──┬──┬───┐ │日付│名前│修正点│ ├──┼──┼───┤ │日付│名前│修正点│ ├──┼──┼───┤ こんな感じでずらっと並ぶので、できるならスクロールバーがあったほうがうれしいです。 >print "Content-Type: text/html; charset=Shift_JIS\n\n"; これは、CGIの中のヘッダーの一列を消すということでOKですか? >なにも改造しないままSSIで呼び出してみてはいかがでしょうか どう表記したら良いのでしょうか?基本的なことがわかってなかったりします(T.T) 再度、よろしくお願いします。

関連するQ&A

  • SSIのようにして、CGIをページ内に表示させる

     通常のHTMLページにCGIを読み込むにはSSIなどの方法がありますが、  SSIを使っているページは左、中央、右といったように分かれていて、呼び出した日記を中央に表示させるとします。これだとトップページはSSIで問題なく表示出来ますが、その表示された日記にあるリンク(先月の日記、とか)をクリックして先月のページを表示させると、SSIの仕組みからして当然、最初に読み込んだ際のレイアウトは無視され、左、右のカラムは消えて、ただの日記だけのページになってしまいます。  iframeなど、別の表示方法もありますが、iframeなどのフレームはSEOの観点から避けたいと思っています。  SSIでは無理だとすると、このようなリンク先まで最初の読み込みレイアウトを維持して表示する方法はあるでしょうか。

    • ベストアンサー
    • HTML
  • SSIでCGIを出力?

    今、インフォシークでHPを作ってます。 拡張子が.htmlのページの中に<iframe>で、小さくCGI(拡張子.cgi)を表示しているのですが、 そのCGIのページにも広告が入ってしまって、広告がいっぱい!となってしまいました。 インフォシークではフレームを使った場合の小さい方のページは.shtmlにしろ、とありましたが、CGIの拡張子を変えるわけにも行かず問い合わせをしたんです。 すると >CGIで出力させているフレームを.shtmlファイルにして、 >そこにSSIと同様の方法でCGIを出力させてください。 と返答がありました。 1行目の意味と、2行目のやり方が解かりません。 ・・・長くなってすみませんm(_ _)m

    • 締切済み
    • CGI
  • SSIでCGIを起動するには…

    同じ質問をしてましたが、回答がなかった為、カテを変えて質問します。 SSIを使いフレームみたいなページを作りました。 左側のメニューページをSSIで呼び出し、実行と言った感じです。 それで、掲示板などのCGIを右側のページに呼び出そうと思ったのですが、どうやっても出来ません。 画面は一応は呼び出せるのですが、画面がぐちゃぐちゃになっていて、そのCGIの書き込みすら出来ない状態です。 また、CGIを表示するHTMLを呼び出しても同じ結果でした…。 パーミションは変更しています。 またインラインフレームでは表示、書き込みは可能なのですが、 なんとかSSIで表示できないものかと悪戦苦闘です^^; この様な場合、どうすれば良いのか教えてください!! もしくは、設置に関するwebページなどがあったら教えてください!!

  • CGIの中でSSIが出来ないので直接呼び出したいのですが...

    データベースCGIを改造中です。 左にデータベース内のジャンルをリスト表示し、右側にリスト一覧・データ詳細を表示するようにしたいと思っています。 ジャンル一覧にはそのジャンルのレコード数をSSIで表記しています。 リスト表示はsearch.cgiで管理、レコード数表示はcount.cgiで表示させるようにしています。また、レコード数表示のcount.cgiはジャンル数確認以外にも利用しています。 リストを表示する手前に置くジャンル一覧ページはhtmlで作っています。レコード部分は<!--#include virtual="./count.cgi?mode=genre&genre=1" -->と言うような書き方をしています。 リスト表示のsearch.cgiをデザインを統一する為スキンを利用する形で作成しようとしています。しかし、上で使ったジャンル一覧ページをそのまま利用しようとしたのですが、SSIを利用したレコード数の表示が出来ません。 そこで、CGIの中でSSI的なものを表示させたいと思うのですが、どのようにしたら良いでしょうか? ふと考えたのは「count.cgiからジャンル数をチェックする部分を抜き取りそれをsearch.cgiのサブルーチンとして動作させ、そのサブルーチンを動作させるようにスキン部分にどうにかコードを書込みする」 と言うものですが、この「スキン部分にどうにかコードを書込みする」の部分がさっぱりです。 sub count部分は、「リスト取得」→$in{'genre'} == $genreだったら$ken++ →結果表示、としています。 頭がこんがらがって考えがまとまってないです。 どう考えればば良いでしょうか?

    • 締切済み
    • CGI
  • SSIを挿入したWEBぺージがFireFoxでブラウザの中央に表示され

    SSIを挿入したWEBぺージがFireFoxでブラウザの中央に表示される方法をどなたか教えていただけませんか? TOPページに最新情報を挿入するためSSIのインクルードを使ってページを更新したところ、それまでブラウザの中央に表示されていたのですが、FireFoxで左寄せになってしまいました。(IEでは中央に表示されます。) 他のページが全て中央表示なので何とか中央表示にしたいのですが、どなたか対処方法を御存じの方がいらっしゃいましたらお教えください。 もともとは,<iframe>で表示していたのですが、SEO上ページに更新記録を付け加えても変更していないことになってしまうので、SSIを使用することにしました。 挿入したタグは <!--#include file="kousin.html"--> です。 ページは http://www.gassyuku-saijo.jp です。 よろしくお願いします。

  • CGIにSSIカウンタをつけたい

    掲示板や日記帳などのCGIに、別途ダウンロードしたSSIのテキストカウンタを表示させようとしたところ、ローカル・Web共に表示されませんでした。 表示する為の記述は「<!--#include virtual="仮想パス"-->」で、HTMLファイルに記述した場合は問題なく表示・動作しました。 HTMLファイルで表示・動作しましたし、CGI・SSI・「.htaccess」ファイルなどの設定はおそらく問題ありません。 SSIのテキストカウンタは「The Room」というサイトの「Text Day Counter Ver.1.10 SSI版」を使用しています。 CGIは「掲示板や日記帳など」と言いましたが、まだ検討段階で特定のCGIはなく、色々なCGIで試しています。 ※特定のものだけではなく、テキストカウンタを表示したいと思うCGIにつけたいのです。 CGIの記述は (1) print "<!--#include virtual=\"仮想パス\"-->\n" ; (2) print '<!--#include virtual="仮想パス"-->\n' ; (3) print "<!--#include virtual='仮想パス'-->\n" ; (4) print <<"EOM"; <!--#include virtual="仮想パス"--> EOM と4通り試しましたが、どれも動作しませんでした。 SSIのテキストカウンタのパスが「http://xxx.yyy.zzz/aaa/bbb/ccc/txtdayc1.cgi」だとしたら、仮想パスは「/aaa/bbb/ccc/txtdayc1.cgi」のようなので、そう記述しましたが動作しませんでした。 CGIと同じディレクトリに置いているので、記述を「<!--#include virtual="./txtdayc1.cgi"-->」に変えたところ、HTMLファイルでは動作しました。 なぜSSIのテキストカウンタがCGIで表示されないのか、アドバイスをお願いできないでしょうか? また、「<!--#include virtual="仮想パス"-->」を「<!--#include virtual="CGIファイル名"-->」または「<!--#include virtual="フルパス"-->」のように記述しても問題ないのかも教えて頂けると助かります。 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • iframe と ssi のメリットとデメリット

    あるページに他ファイル(htm やcgi)を入れる時に、iframe とサーバーサイドインクルードという二つの方法がありますが、この二つのそれぞれのメリット、デメリットはなんなのでしょう? ssiは、サーバーに負担がかかるということは読んだことがありますが、もっと他の面(たとえば、HPの更新の手軽さなど)からどういう違いがあるのか、お教えください。メリット、デメリットを思いつくまま列挙していただければありがたいです。

    • ベストアンサー
    • HTML
  • SSIで表示させると?

    ホームページ作成中です。 トップページに商品一覧(TEXT)があり、クリックするとその商品紹介ページに移動するようにリンクを張っています。 現在商品が1つ増えるとindex.htmlをいちいち開いてリンクを張るようにしているのですが、これをCGI(SSI)で表示しようかと考えました。 ただ、CGI表示だと困ったことがおきます。全体をCGI等のページにしてしまうと検索エンジンに引っかからなくなりますよね。 また、リスト部分だけiframeで使用するとリストが検索に引っかからなくなりますよね。 商品の中には社名より商品名の方がメジャーな物がいくつかあり、実際アクセス解析しても社名より商品名で検索している人が多いため、これが検索にヒットしないと言う状況は絶対避けたいのです。 そこで、SSIで表示した場合はどうなるのでしょうか? ソースで確認すると普通にhtml表示されてますよね。 検索にヒットしないのだったら使用したくは無いのですが… (<meta>にキーワードを入れればいいのでは?と言うのは無しでお願いします。その手間を省くためにCGIでの処理をしようとしているのですから…) よろしくお願いします。

    • ベストアンサー
    • CGI
  • CGI内からSSIを実行したいのですが・・・

    趣味でPerlによるCGIをやっています。 CGI出力結果と他のページとでヘッダーを共通化したいのですが、CGIファイル内にSSIの#include fileなどを挿入することはできるのでしょうか。 CGIファイルの中に print "<!--#include file="sample.html"-->\n";とするとそのままソースに書きこまれて出力されるだけで実行されないんですけど、、、なにかうまい方法はないでしょうか、お願いします。

  • PHP+SSI

    「index.php?a=100」のようなページをSSI(ssi.shtml) から実行したいと考えています。 ところがssi.shtml内で <!--#exec cmd="index.php 100"--> とし index.php内で引数渡しの設定として「$argv[0]」として ますが、ssi.shtmlを実行しても実行結果を返さずブランクに なってしまいます。index.phpのパーミッションも実行可能に 設定しているのですが…。  上記以外の方法でも結構ですので、SSIで引数付きのPHPを 実行する方法をご存じの方がいらっしゃいましたら、教えて ください。 Apache 1.3.31+PHP 4.3.1で動いています。もちろんSSIで #execがNGなんてオチも有りません。 なお、下記URLによればSSIからの引数渡し自体はCGIだと可能の ようですが…。 http://tohoho.wakusei.ne.jp/wwwssi.htm#Exec

    • 締切済み
    • PHP

専門家に質問してみよう