• ベストアンサー

これらの2つの違いを教えて下さい。

カテゴリーが違っているかもしれませんが、質問させてください。初心者です。 SSIを使ってファイルを呼び出すときに、こういった記述を行うと思うのですが・・・。<!--#include file="./menu.txt" --> もう一つ。<!--#include virtual="./menu.txt" -->という記述方法があるのですが、このfileとvirtualの違いは何でしょうか??私が二つ試したところ、この記述方法の違いを感じることは出来ませんでした。 また、Apacheではvirtualを推奨していると言うことなので、fileを使わずに全てvirtualで記述したら駄目なのでしょうか?? あと、="./menu.txt"と書いている部分の./ってどんな意味でしょうか?上の階層を指定する場合は./../menu.txtと書けばいいのでしょうか? 変な質問ですみません。よろしくお願いします。

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

  • ベストアンサー
  • haru44
  • ベストアンサー率60% (12/20)
回答No.2

2つは、ファイルの探し方(root)が違います。 #include file= は、そのHTMLファイルがある ディレクトリから実際のディレクトリ構造に沿って 探します。 本当のルートディレクトリを指す / や 上位ディレクトリ ../ は、サーバの設定によっては 使えないことがあります。 #include virtual= は、DocumentRoot からの ディレクトリ構造に沿って探します。 / を指定すると DocumentRoot になります。 ../ なども使えますが、DocumentRoot の中しか たどれません。 下記の2つを試すと違いが出てくると思います。 #include file="/index.html" #include virtual="/index.html" それから別件ですが、 ピリオド2つで上位ディレクトリを指すのは ご存知のようですね。ピリオド1つはカレント ディレクトリを指します。 ./menu.txt は、明示的に、カレントディレクトリの menu.txt を表わしています。 サーバによっては、ファイル名の先頭が ./ でないと 受け付けてくれない設定になっているものもあるので、 念のため ./ をつける習慣になっているみたいです。

apple_mango
質問者

お礼

haru44さんありがとうございます。 とても丁寧なご説明感謝いたします。 >下記の2つを試すと違いが出てくると思います。 #include file="/index.html" #include virtual="/index.html" なるほど、探し方が違うと言う意味が分かりました。 >./menu.txt は、明示的に、カレントディレクトリの menu.txt を表わしています。 ありがとうございます。 >念のため ./ をつける習慣になっているみたいです。こんな習慣もあったんですね。本当にとても参考になりました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • taseki
  • ベストアンサー率66% (155/233)
回答No.1

<!--#include virtual="./menu.txt" --> というのは間違いではないでしょうか。 fileは、対象ファイルの検索開始がカレントディレクトリ(そのSSIファイルがあるディレクトリ)で、 virtualは、仮想絶対パス、簡単に言えば「 http://abc/def/ghi/ 」の 「/def/ghi/」部分です。 使い分けは、fileは上位ディレクトリを参照できませんので、そんなときはvirtualを使います。 ↓ここなんて参考になるのでは? http://www.scollabo.com/banban/ssi/ssi_005.html 「./」の意味については、それをお答えするよりも、「パス」について勉強されたほうがapple_mangoさんにとって良いかと。 ちなみに私はよく「/abc/menu.txt」というような書き方をします(先頭がピリオドじゃなくスラッシュ)。これは絶対パスと言って、それを書くファイルがどこにあろうと常に同じなので、コピーなどもできて便利だからです。

apple_mango
質問者

お礼

早速のご解答ありがとうございます。 ><!--#include virtual="./menu.txt" -->というのは間違いではないでしょうか。 なるほどですね!今回はvirtualを使ってもカレントディレクトリ内のファイルを呼び出せたので、何が違うのかなーと思っていた次第でした。 URLの方も参考にさせていただきます。

すると、全ての回答が全文表示されます。

関連するQ&A