偏西風さん、
>URLのパスとしては、[/~abc]を一つのディレクトリと見なして、[../]は[/~abc]の一つ上を意味する、と云うことでしょうか?
その通りです。
[/~abc/../]ですから、結局[/]になります。
その後で、ハードディスクとのフォルダとの関係を考えます。
[/] というのはドキュメントルートそのものですから [C:\NIHON] になります。
中田先生、「ちゅーり」さん、
頭が変になりそうです。
ローカルディスクに、
C:\NIHON\TOKYO\SINJUKU\public_htmlと各フォルダを作り、
\public_htmlの中にindex.htmlファィルを入れ、
index.htmlファィル の中で <img src="../images/xxx.gif"> と、画像ファイルの場所を指定したとします。
この時のAN HTTPのオプションは、
ドキュメント・ルート:[C:\NIHON]
[/~abc] -> ドキュメントルート\[TOKYO\SINJUKU\public_html]に設定してあります。
そして、ブラウザのURL欄に、http://localhost/~abc/と入れindex.htmlを呼び出す場合、
この時、[../]はどこを指すのか?と云う疑問でした。
私は、\public_htmlの一つ上のディレクトリだから\SINJUKUだろう、と思いました。
中田先生の説明で、
>URLパスは、
>/~abc/../images/xxx.gif
>になりますから、結局
>/images/xxx.gif
>になります。
「ちゅーり」さんの云われる
>/~abc/index.html からは、../ が http://localhost/ と
>見えるずです。
と、云うことは、
URLのパスとしては、[/~abc]を一つのディレクトリと見なして、[../]は[/~abc]の一つ上を意味する、と云うことでしょうか?
[/~abc]は[TOKYO\SIJUKU\public_html]だから、その上と云えば[\NIHON]になる。
こじつけでしょうか?
すみません。
これにて、この件に付いての連続投稿は止めて、しばらく考えます。
偏西風さん、
以下に書くことはちゅーりさんの指摘と同じ事ですが、少し詳しく書きます。
とりあえず、
/~abc-->/TOKYO/SINJUKU/public_html
のところは
/~abc-->TOKYO\SINJUKU\public_html
としてください。
つまり、パスの区切りに / を使うのは URLのパス(仮想パス、http://localhost に続くパス)で、ローカルパス(ローカルのハードディスク上のパス)では \ をパスの区切りに使います。
URL
http://localhost/~abc/index.html
の場合に URLパスは
/~abc/index.html
です。
/~abc --> ドキュメントルート \ [TOKYO\SINJUKU\public_html]
ですから、
/~abc --> C:\NIHON\TOKYO\SINJUKU\public_html
ということになります。
したがって、URLパス
/~abc/index.html
は、ハードディスク上のパスでは
C:\NIHON\TOKYO\SINJUKU\public_html\index.html
のことになります。
index.html の中に <img src="../images/xxx.gif"> という記述があるとします。
index.html があるところが起点(カレントディレクトリ)になりますが、これはあくまで URLパスなので、URLパスは、
/~abc/../images/xxx.gif
になりますから、結局
/images/xxx.gif
になります。
http: から書けば、
http://localhost/images/xxx.gif
になってしまいますから、ディスク上のパスでは、
C:\NIHON\images\xxx.gif
になってしまいます。
したがって、別途エイリアスを追加して、
/images C:\NIHON\TOKYO\SINJUKU\images
とでもしておけば、
http://localhost/images/xxx.gif
は
C:\NIHON\TOKYO\SINJUKU\images\xxx.gif
のことになりますが、これだと ../ という相対指定を使う意味があまりないかもしれません。
要するにURLパスの相対指定だということで、ディスク上のフォルダの位置関係の相対指定ではないということになります。
偏西風さんへ、
言われている事の意味が分かりました。
http://localhost/~abc/index.htmlとした場合、
/~abc/index.html からは、../ が http://localhost/ と
見えるはずです。
つまり
C:\NIHON\TOKYO\SINJUKU\public_html の ../ は
C:\NIHON\ になると。
ちなみに
C:\NIHON\images を作成すると表示されませんか?
規格上は知りませんのでご存知の方、フォローお願いします。(^^;/
すみません!
名前の所に、タイトルは必要ないのに、タイトルを書いてしまいました。
相対位置指定は、「今どのディレクトリにいるのか」によると思います。
DOS画面でしたらプロンプトを見ればすぐわかりますが、AN HTTPの場合、
例えば、
C:\NIHON\TOKYO\SINJUKU\public_html(public_htmlにHTMLファィルを入れます)
C:\NIHON\TOKYO\SINJUKU\images(imagesに「.gif」ファィルを入れます)
として、
ドキュメント・ルートは「C:\NIHON」
「ドキュメント・ルート\」の所は、/~abc-->/TOKYO/SINJUKU/public_html
としたとします。
このようにして、ブラウザのURLに
http://localhost/~abc/index.htmlと入れた場合、
index.htmlに貼り付ける「.gifファィル」の相対位置は「../」にならないのでしょうか?
つまり、カレント・ディレクトリから見て、一つ上のフォルダの中に入っているフォルダ、と云う意味です。
この場合、カレントディレクトリは\public_htmlではないのか?と思っているのですが、、、。
つまる所、上記のようにAN HTTPを設定してHTMLファィルを呼び出す場合、カレント・ディレクトリはどこになるか、と云うことがわかりません。
偏西風さん、
「同じ」フォルダに入れたのなら、ちゅーりさんの言われるとおり "./" ですが、「同じレベル」の別のフォルダなら、"../"を使うことになりますね。
もちろん "../"という相対指定は正しい使い方であれば使えます。
つまり、"../" は、ひとつ上のフォルダを指しますが、ドキュメントルートより上へは行けません。
ドキュメントルートより上に行けたとしたら、外部からディスク上の任意のファイルにアクセスできてしまうことになりますからセキュリティ上の大問題になります。
「ドキュメントルートより上へは行けない」の意味が不明の場合は、ドキュメントルートをどう設定しているか と HTMLファイル、.gifファイルをどこに置いているか を省略せずに説明してください。
偏西風 さんへ
> 同じレベルのフォルダにいれました。
../ (ドット ドット /) では無く ./ (ドット /) です。
../ (ドット ドット /) は一つ上のフォルダになります。
ローカルサーバとしてAN HTTP 1.32fを起動して、ブラウザからHTMLファィルを見る時のことですが、
HTMLに貼り付ける.gifファィルを,HTMLファィルを入れたフォルダと同じレベルのフォルダにいれました。
(中略)
要するに、../と云うフォルダの位置指定が利きません。
.gifファィルを入れたフォルダを、HTMLフォルダの下に置くと、HTMLに絵が張り付きます。
../と云う相対位置指定は使えないのでしょうか?
win2k,IE5.5 です。