HTMLから外部ファイルへの参照方法について。

CSSや画像をHTMLから参照しようとするとき、"/image/hoge.jpg"のように書くと読める環境と読めない環境があります。
ずっとUNIXとWindowsの違いだと思っていたのですが、WinXP+xamppの環境を2つ用意したところ一方は読めて一方は読めないという現象になりました。
これはどこかで設定しているものなんでしょうか

回答の条件
  • 1人5回まで
  • 登録:2009/08/07 02:40:41
  • 終了:2009/08/07 10:03:25

ベストアンサー

id:motokun44 No.2

motokun44回答回数42ベストアンサー獲得回数62009/08/07 09:34:03

ポイント70pt

「/」はルートディレクトリ(topディレクトリ、Windowsの場合なら通常は C:\)

「./」は現在の作業ディレクトリ("カレントディレクトリ"といい、通常はブラウザで見ている場合なら、そのHTMLファイルがあるディレクトリ、cgiで出力しているならそのCGIファイルがあるディレクトリ)

「../」は「./」の1つ上のディレクトリ、「../../」はそのまた1つ上のディレクトリ

を示します。

ですが、Windowsでは作業ディレクトリをプログラムごと、またはファイルごとに別に指定することができますので、そのファイルがあるディレクトリとカレントディレクトリが異なる場合があり、意図した動作をしない場合があります。

id:dedara

一方がたまたまドキュメントルートになってただけでした。

ありがとうございます

2009/08/07 10:02:15

その他の回答(2件)

id:yofukaci No.1

yofukaci回答回数306ベストアンサー獲得回数102009/08/07 06:54:23

"./image/hoge.jpg”

とかで書いてみては?

id:dedara

そういうことを聞いているのではなく、どこかで設定するものであれば

どこで設定しているのか、というようなことです。

別に読めなくて困っているわけではありません

2009/08/07 08:40:46
id:motokun44 No.2

motokun44回答回数42ベストアンサー獲得回数62009/08/07 09:34:03ここでベストアンサー

ポイント70pt

「/」はルートディレクトリ(topディレクトリ、Windowsの場合なら通常は C:\)

「./」は現在の作業ディレクトリ("カレントディレクトリ"といい、通常はブラウザで見ている場合なら、そのHTMLファイルがあるディレクトリ、cgiで出力しているならそのCGIファイルがあるディレクトリ)

「../」は「./」の1つ上のディレクトリ、「../../」はそのまた1つ上のディレクトリ

を示します。

ですが、Windowsでは作業ディレクトリをプログラムごと、またはファイルごとに別に指定することができますので、そのファイルがあるディレクトリとカレントディレクトリが異なる場合があり、意図した動作をしない場合があります。

id:dedara

一方がたまたまドキュメントルートになってただけでした。

ありがとうございます

2009/08/07 10:02:15
id:kn1967 No.3

kn1967回答回数2915ベストアンサー獲得回数3012009/08/07 05:28:03

ポイント10pt

2台の環境に、どこか違いがあるとすれば、まずはそれを比較する必要があります。

環境は同じ(はず)なのに読める場合と読めない場合が出るという事であれば、

それはアクセス方法によって、対応が変わるためだと思われます。


■読める場合

http://IPアドレス/index.html のようにアクセス

  ↓

OSは Webサーバソフト にアドレスを渡す。

※この時点で処理はOSではなくWebサーバに移るので、

 対応の違いはWindowsだからUnixだからという問題ではなく、

 Webサーバソフトの違いによるものになる。

  ↓

xampp なら apacheが担当。

  ↓

apacheは ドキュメントルートというものを基準にファイルを探す。

仮にc:¥apache¥docroot¥というディレクトリに設定されているすると、

/image/hoge.jpg は c:¥apache¥docroot¥image¥hoge.jpg に変換される。


■読めない場合

c:¥ディレクトリ¥index.html のようにアクセス

※Windowsの場合です。

  ↓

Windowsが対応します。

  ↓

Windowsのルートはカレントドライブの¥になりますので、

/image/hoge.jpg は c:¥image¥hoge.jpg に変換されます。

  • id:motokun44
    私の回答に誤解を招くようなところがありました。
    「/」はWWWの場合、httpd.confで設定された document_rootディレクトリですね。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません