電子書籍の厳選無料作品が豊富!

カテゴリーが違っているかもしれませんが、質問させてください。初心者です。

SSIを使ってファイルを呼び出すときに、こういった記述を行うと思うのですが・・・。<!--#include file="./menu.txt" -->

もう一つ。<!--#include virtual="./menu.txt" -->という記述方法があるのですが、このfileとvirtualの違いは何でしょうか??私が二つ試したところ、この記述方法の違いを感じることは出来ませんでした。

また、Apacheではvirtualを推奨していると言うことなので、fileを使わずに全てvirtualで記述したら駄目なのでしょうか??

あと、="./menu.txt"と書いている部分の./ってどんな意味でしょうか?上の階層を指定する場合は./../menu.txtと書けばいいのでしょうか?

変な質問ですみません。よろしくお願いします。

A 回答 (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 を表わしています。

サーバによっては、ファイル名の先頭が ./ でないと
受け付けてくれない設定になっているものもあるので、
念のため ./ をつける習慣になっているみたいです。
    • good
    • 0
この回答へのお礼

haru44さんありがとうございます。

とても丁寧なご説明感謝いたします。
>下記の2つを試すと違いが出てくると思います。
#include file="/index.html"
#include virtual="/index.html"

なるほど、探し方が違うと言う意味が分かりました。

>./menu.txt は、明示的に、カレントディレクトリの
menu.txt を表わしています。
ありがとうございます。

>念のため ./ をつける習慣になっているみたいです。こんな習慣もあったんですね。本当にとても参考になりました。

お礼日時:2005/07/15 10:26

<!--#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」というような書き方をします(先頭がピリオドじゃなくスラッシュ)。これは絶対パスと言って、それを書くファイルがどこにあろうと常に同じなので、コピーなどもできて便利だからです。
    • good
    • 0
この回答へのお礼

早速のご解答ありがとうございます。

><!--#include virtual="./menu.txt" -->というのは間違いではないでしょうか。

なるほどですね!今回はvirtualを使ってもカレントディレクトリ内のファイルを呼び出せたので、何が違うのかなーと思っていた次第でした。

URLの方も参考にさせていただきます。

お礼日時:2005/07/14 12:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!