SSI includeの使用について

このQ&Aのポイント
  • SSIのincludeについての質問になります。http://www.tatoeba.com/folder/などの違うフォルダの中にファイルから同一のメニューバーなどを読み出す場合、絶対パスでしか入力を受け付けないのか疑問です。
  • 相対パスでの呼び出しでもうまく機能しているウェブサイトもあるため、自分ではどうすることもできません。
  • 相対パスの場合、指定したファイルに遷移できない場合もあるため、絶対パスしかないのか疑問に思っています。詳しい方、この疑問について教えてください。
回答を見る
  • ベストアンサー

ssi includeの使用について

SSIのincludeについての質問になります。 <!--#include file="" --> この場合、 http://www.tatoeba.com/ http://www.tatoeba.com/folder/ http://www.tatoeba.com/folder/bunrui/ などの違うフォルダの中にファイルから、 同一のメニューバーなどを読み出す場合、 やはりそれらに記載されているアンカーテキストや画像は、 絶対パスでしか入力を受け付けないんでしょうか? 大手のウェブサイトなどを見る限り、 どうみても相対パスで入力されていて、 そしてうまく機能しているように思うんですが、 自分ではどうすることも出来ません。 相対パスの場合、 http://www.tatoeba.com/index.html を呼び出したいんですが、 http://www.tatoeba.com/folder/index.html にいってしまったりするので、 絶対パスしかないのかな・・・と悩んでおります。 どなたか詳しいかた、 この説明でわかって頂ければ教えてください。

noname#20120
noname#20120
  • HTML
  • 回答数4
  • ありがとう数3

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

  • ベストアンサー
  • elmclose
  • ベストアンサー率31% (353/1104)
回答No.4

ということは、要求されていることは、異なる相対パス名を、ひとつのmenu.htmlの中で書きたいということですね。 ということは、menu.htmlとして静的なテキストを書くだけでは、その要求を満たすことはできません。 環境変数や、条件に応じた制御を行う構文を用いれば、可能だと思います。 http://tohoho.wakusei.ne.jp/wwwssi.htm#Echo http://tohoho.wakusei.ne.jp/wwwssi.htm#If ただ、相対パスをお使いになる理由は「サーバーへの負荷が軽くなるため」なのでしょうか。相対パスを使ったからといって、サーバの負担は軽くならないような気がするのですが。相対パスは、ブラウザ側で解決されて、HTTPリクエストをブラウザからサーバに投げる段階で既に絶対パスに変換されてますので。 また、サーバの負荷を軽くするためでしたら、SSIを使わないことを最も有効だと思われます。SSIは、その名の通り、サーバ側でincludeしますので、その処理をするための負荷がサーバにかかってしまいます。 参考になれば幸いです。

参考URL:
http://tohoho.wakusei.ne.jp/wwwssi.htm
noname#20120
質問者

お礼

非常に参考になりました。 長い間、おつきあい頂きまして、 誠に有り難うございました。

その他の回答 (3)

  • elmclose
  • ベストアンサー率31% (353/1104)
回答No.3

再度補足をお願いします。 (1) 下記5ファイルの関係はどうなっていますか? どのファイルから、SSIでどのファイルをincludeするのでしょうか? includeする/される関係を全て書いていただけますでしょうか? http://www.tatoeba.com/index.html http://www.tatoeba.com/folder/index.html http://www.tatoeba.com/folder/folder/index.html http://www.tatoeba.com/aboutus.html http://www.tatoeba.com/menu.html http://www.tatoeba.com/folder/sample.html (2) >http://www.tatoeba.com/folder/folder/index.html >このページに表示されているmenuは、 >http://www.tatoeba.com/menu.html とは、どういう意味でしょうか? http://www.tatoeba.com/folder/folder/index.html の中でフレームを切って、そのフレームの中のひとつで http://www.tatoeba.com/menu.html を表示させるという意味でしょうか? それとも他の意味でしょうか? (3) >http://www.tatoeba.com/folder/sample.html >というファイルをmenuから呼び出す場合には、 とは、どういう意味でしょうか? http://www.tatoeba.com/menu.html の中に、 http://www.tatoeba.com/folder/sample.html をincludeさせるという意味でしょうか? あるいは、他の意味でしょうか?

noname#20120
質問者

補足

1. http://www.tatoeba.com/menu.html このファイルのみがincludeされるファイルです。 200ピクセル程度のメニューバーだと思ってください。 2, その通りの意味となります。 メニューバーをそれぞれのフォルダから表示させることを目的としております。 3. includeされているmenu.htmlというファイルに、 sample.htmlへのリンクを貼るという意味です。 つまり3をご理解頂ければわかるかと思いますが、 それぞれ違うディレクトリからsample.htmlへのリンクを貼る場合は相対パスが異なってしまうのは十二分にご理解頂いているものと思います。 しかし、それぞれのディレクトリに同じメニューバーを挿入することによって、 ページ編集作業を容易にしたいと思っております。 絶対パスであれば 何の問題もないのですが、 相対パスにしたほうが サーバーへの負荷が軽くなるために、 出来る限り相対パスでの方法がないかどうか 模索したいと思っております。 以上よろしくお願い致します。

  • elmclose
  • ベストアンサー率31% (353/1104)
回答No.2

さらにお聞きします。 http://www.tatoeba.com/folder/index.html の中から、 http://www.tatoeba.com/aboutus.html を呼び出すときに、 「../aboutus.html」 と書いてますか? (「../」は親ディレクトリを表わします)

noname#20120
質問者

補足

何度もお返事有り難うございます。 申し訳ございません。 うまく伝えるのが非常に困難です(汗) 例えば、 http://www.tatoeba.com/folder/folder/index.html からトップページを相対パスにすると ../../index.html になるかと思いますが、 http://www.tatoeba.com/folder/folder/index.html このページに表示されているmenuは、 http://www.tatoeba.com/menu.html にあるため、 相対パスで../../index.html と指定すると問題になるかと思います。 他にも http://www.tatoeba.com/folder/sample.html というファイルをmenuから呼び出す場合には、 http://www.tatoeba.com/index.html からはfolder/sample.html と指定を、 http://www.tatoeba.com/folder/index.html からはsample.html と指定を、 http://www.tatoeba.com/folder/folder/index.html からは../sample.html と記載する必要性があるため、 同一のmenu.htmlでは対応が出来ず、 絶対パスでURLを記載しておくしか方法がないのではないか?ということとなります。 かなりややこしくて申し訳ございません。 どうぞよろしくお願い致します。

  • elmclose
  • ベストアンサー率31% (353/1104)
回答No.1

相対パスでいけるような気がしますが。 >http://www.tatoeba.com/index.html >を呼び出したいんですが、 >http://www.tatoeba.com/folder/index.html >にいってしまったりするので、 その場合、具体的に、どのようにincludeを指定しておられますか? あと、http://www.tatoeba.com/index.html って、 http://www.tatoeba.com/ の一番上の(トップの)ページですよね。それをincludeするって、何かちょっと変な感じがするのですが・・・

noname#20120
質問者

補足

すいません。うまく質問がかけてない様子です。 menuファイル http://www.tatoeba.com/menu.html を作ったとします。 そしてそのmenuファイルの中に、 http://www.tatoeba.com/aboutus.html というファイルへのリンクを 相対パスでaboutus.htmlと貼っておきます。 それを、 http://www.tatoeba.com/index.html http://www.tatoeba.com/folder/index.html などから呼び出します。 その場合、 http://www.tatoeba.com/folder/index.html からaboutus.htmlを呼び出すとすると、 相対パスでは http://www.tatoeba.com/folder/aboutus.html に飛んでしまい、 ページがうまく表示できない、というわけです。 絶対パスであれば、 問題なく飛ばすことが出来ます。 絶対パスと相対パスを理解していない、 完全な素人質問かもしれません。 よろしくお願い致します。

関連するQ&A

  • ssiのinclude fileについて

    現在、サイト制作中なのですが、流行のRSSを取得し、トピックスを作成するという事を行っているのですが、どうもうまくいきません。 http://njoy.pekori.to/blog/index.php?eid=38 こちらを参考にし、表示させる所まではできました。 ただ、この方法ですと、各RSS配信サイト事にスクリプトを用意しなければなりません。 そこで、各ニュースサイト事にスクリプトを分け、説明にある通り、 <ul><!--#include file="rss.phpのアドレス" --></ul> で、新たなスクリプトのパスを書いてみましたが、何故か、そのPHPのソースが表示されてしまいます。 試しに、 <ul><!--#include file="1/rss.php" --></ul> <br> <ul><!--#include file="2/rss.php" --></ul> と並べてみ、確認するとやはり下のほうだけPHP自体のソースが表示されます そこで、上の方を削除してみると、下のほうは綺麗に表示されました 全く離れた所に、 <ul><!--#include file="3/rss.php" --></ul> を記載してみると、やはりこれもソースが表示されます。 同一ページでは、include fileが使えないのでしょうか? それとも、使うには何か方法がいるのでしょうか? 現在、.httaccessにて、 <Files index.html> Options +Includes AddHandler server-parsed html </Files> と、index.htmlでssiを実行できるようにしています。

    • ベストアンサー
    • CGI
  • 【SSI】include file、include virtualが動作しない

    htmlはほぼマスターしているのですが、SSIは超初心者です。 標記の通り、include file、include virtualを試しているのですが、参照先のファイルが表示されません。サーバにはアップロードしておらず、ローカルで確認しているのですが、これでは動作しないのでしょうか。 --index.shtml <html> <head> </head> <body> <!--#include file="0000.html" --> ... <!--#include file="0001.html" --> </body> </html> --0000.html <html> <head> </head> <body> あああ </body> </html> 情けない質問ですが、よろしくお願いします。

    • ベストアンサー
    • HTML
  • SSIって意外と不便?

    SSIだと、更新するのにひとつのファイルだけを更新すればいいかと思ってましたが、そうでもないんですね。 例えば、サーバーによっては、SSIの読み込みに際して、フルパスを禁止しています。 ですので、相対パスで読み込まなきゃいけないんですが、下位ディレクトリからしか読み込んでいけない場合も多く、不便ですよね。 トップページに参照にするファイルを置いておいて、それを読み込むのならSSIが読み込もうとするファイルは1個ですみますが、 下位ディレクトリにしかおけないとなると、例えば「日記」と「お小遣い」というディレクトリがあったとしたら、それぞれのディレクトリの中に、それぞれSSIの読み込むファイルを置かないとダメになりますよね?ですから不便です。 これらの解決策はありますか? もうひとつ質問です。 SSIで読み込もうとするファイルに大量のリンクを張っていた場合、それらはフルパスで記載しておいたほうが便利ですよね?相対パスだと、ディレクトリの深さによって全て書き直さなきゃいけなくなりますから。 で、絶対パスだと何か負担が大きくなるとか、マイナス作用がありますか?

    • ベストアンサー
    • CGI
  • ssi がうまく動作しません。

    サーバ会社に訪ねると.htaccessに AddType text/html shtml を記入して下さいとのことでした。 以下の方法でためしましたが、エラーがでるわけでもなく、<!--#INCLUDE VIRTUAL="/ssi/xxx.shtml"--> にした部分だけが表示されません。 http://aaa.com/bbb/ccc/ddd.html .htaccess は、bbbのファイル内におきました。 1, ssi/xxx.shtml は、indexと同じトップの階層におきました。 ddd.html に  <!!--#INCLUDE VIRTUAL="/ssi/xxx.shtml"--> を記入しました。 2, ssi/xxx.shtml は、bbbのファイル内において、ddd.html に <!--#INCLUDE FILE="/ssi/xxx.shtml"--> を記入してみましたが、これもだめでした。 パーミッションも何がいいのか、お分かりでしたらお願い致します。 ちなみに777にして試したのですが、だめでした。

    • ベストアンサー
    • CSS
  • php インクルードincludeした時のパス

    phpにてincludeした時のパスで躓いています。 現在のツリーは以下の様になっています。 index.html common  ├header.html  ├footer.html  ├right.html  ├img   ├navi-home.jpg   ├navi-1.jpg  ├css   ├base.css salon  ├hair    ├kari     ├index.html     ├access     ├ ├index.html     ├menu     ├ ├index.html この中の../hair/kari/index.htmlの中に ../common/header.html及びfooter.htmlを <?php include_once(dirname(__FILE__).'/../../../common/header.html'); ?> にてインルードしています。(書き方あってます?dirname(__FILE__).いります?) つぎに../hair/kari/access/index.htmlの中にもインクルードします。 <?php include_once(dirname(__FILE__).'/../../../../common/header.html'); ?> という風に一つ下の階層なので../を付け足しました。 このようにページ毎にheaderまでの相対パスが違うので、そのページ毎にパスを書き換えていかなければいけないものなのでしょうか? また../始まりではなく/始まりでないと表示されません。 /始まりは絶対パスでしたっけ? この書き方は間違っているのでしょうか? そして最後に、 ../common/header.htmlの中の画像ファイルやリンクは <img src="/common/img/navi-home.jpg"> の様に書かないと、インクルードしたファイル側で表示されません。 これも同じように/始まりのこの書き方でいいのでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • PHP
  • SSIに付いて

    こんばんは 初心者には、無謀すぎる挑戦なんですが・・ ヨミーサーチの登録件数をトップページに表示させようとしています。 (1)自分で用意したindex.html (2)index.htmlに、インラインフレームを作った。 (3)メモ帳を開いて「<!--#include file="./log/total_url.log"--> 」(ヨミサーチの登録フォルダ)を書き、「count.shtml」で、保存。 (4)index.htmlに作った、インラインフレームのリンク先は、サーバーに置いた、「count.shtml」アドレスを入れた。 そして、アクセスしたら「[an error occurred while processing this directive]」と、表示されてしまってます。 SSIが使えるサーバーなんですが・・・・

  • #includeで読み込むファイルについて

    http://www.tohoho-web.com/wwwssi.htm ここの「■ ファイル読みこみ(#include)」を見てサイト作成をしようと思うのですが、読み込むファイル(header.htmlなど)は検索対象になるのでしょうか? また、「絶対パス」「仮想パス」の違いがよくわかりません。これまでHTMLのみ扱っていました。「絶対パス」「相対パス」の違いはわかりますが、「仮想パス」は初耳です。 お暇な方、よろしければ以上2点の回答お願いします。

    • ベストアンサー
    • CGI
  • DreamWeaverの「ご丁寧」なSSIへの対応!(^^;)

    DreamWeaverは、SSIでインクルードするファイルも、ファイルのフォルダを移動したりした時に、その「インクルードタグ自体のリンク(つまり、次のような./home/の部分)」 <!--#include file="./home/footer.htm"--> は、自動的に正しく改訂してくれるのは良いのですが、その中のfooter.htmの中の普通のリンクも「ご丁寧に(^^;)」改訂してしまうので、いつも、リンクが整合しなくなってしまいます。 インクルードされるファイルの中のリンクは、手動にてエディタで編集したいので、「インクルードタグ自体のリンク(つまり、次のような./home/の部分)」のみ、改訂して、その中の普通のリンクは、改訂しない設定方法はあるのでしょうか? インクルードされたファイルの絶対的なパスは、インクルードしたファイルのパスになるので、両方とも自動的に改竄したら、リンクが確実にずれて意味が無いのは自明のことのような気がするのですが…。(^^;)

    • ベストアンサー
    • HTML
  • include,requireで外部URLの呼び込み

    include,requireのどちらでもいいのですが、別ドメイン或いは同ドメイン内における違う階層のファイルなど(例えば外部のhttp://www.ooxx.sample)を呼び込む際に、呼び込み先のリンクや画像パスが相対バスではうまくいきません。呼び込み先のリンク、画像パスを絶対URLにすれば問題ないと思いますが、作業が困難になるので避けたいです。 PHPでinclude,requireの使い方は向かないのでしょうか?或いは、他の方法で回避できる方法はないのでしょうか? (SSIやHTMLでインラインフレームみたいなことは使わない)

    • 締切済み
    • PHP
  • htmlの中にssiでphpを表示させる方法について

    いつもお世話になっています。 タイトルにもありますが、htmlファイルの中でphpの実行内容を表示させたいと思っています。 htaccessでhtmlでもssiが動くように設定してあるので、htmlの中でssiを使用してphpを呼び出す事はできるでしょうか? <!--#include virtual = "~.php" --> <!--#include file = "~.php" --> 上記のように試してみたのですが、「[an error occurred while processing this directive] 」と表示されてしまいます。 この記述方法で間違っていないと思っていたのですが、どうしても上手くできません。 phpまでのパスを相対パスや、絶対パスで指定してみましたが、やはりダメです。 表示させたいphpは、直接アクセスするとちゃんと表示されます。 またphpのパーミッションは644となっています。 アドバイスを御願い致します。

    • 締切済み
    • PHP

専門家に質問してみよう