CJ Club TOP/FAQ/相対パス、絶対パス?


疑問ねこ Q/ 相対パス、絶対パス?
ねこくん A/ ファイルのある場所を指定したり表すもの。

 実際はHTMLの基本だが、現在はHP作成ソフトで作る人が多いため理解していない人が多数である(かつてはここの管理人もそうだった…)。ので、サポート掲示板でも良く出てましたのでFAQでまとめる。


    パス名の種類

       インターネットでHPを作る際にファイルを指定するのに使用するパスは相対パス、絶対パス、仮想パスの3つ。が、よく使用されているのは相対パス絶対パス。以下の例を使用しその2つをちょっとわかりにくく説明する。 [ ] はディレクトリ(WIN、MACなどで言うフォルダ)を表している。

        例)
        [public_html]┳index.html
                     ┣[image]┳title.gif
                     ┃       ┣backg.jpg
                     ┃       ┗button.jpg
                     ┣[main]┳main.html
                     ┃      ┗[menu]┳1.html
                     ┃              ┗2.html
                     ┣[cgi-bin]┳[icon]━neko.gif
                     ┃         ┣ibbs.cgi
                     ┃         ┗ibbs.dat
                     ┗jcode.pl
        
        上(高)←--------------------------→下(深)


    1) 相対パス

       相対的な位置からファイルを表示します。覚えるまではちっとも意味がわからないパスだが、サーバにほとんど左右されない。指定文字数も少なくすむ場合が多い(ファイルが軽くなる)ので覚えてしまえば1番多用するパスだろう。

      ibbs.cgiからの例
        とくに指定せずファイル名=> 同じディレクトリ内を指定。
          例) ibbs.dat

        ./ ドット(.)を1回スラッシュ(/)=> ↑と同等の意味。同じディレクトリ内を指定。
          例) ./ibbs.dat

        ../ ドットを2回続けてスラッシュ=> 一つ上のディレクトリを指定。
          例) ../index.html

        ディレクトリ名/ ディレクトリ名のあとスラッシュ=> そのディレクトリ内にあるディレクトリの指定。
          例) icon/neko.gif

        ./ディレクトリ名/ も↑と同等の意味を持ちます。
          例) ./icon/neko.gif

        ../ディレクトリ名/ 一つ上のディレクトリ内にあるディレクトリの指定。
          例) ../image/button.jpg

        スラッシュから始まらないのが相対パスの特徴。

      1) これらをくみ合わせて利用する。
        例えば index.html に title.gif の画像を表示したい場合は<img>を利用し、パスは
          <img src="image/title.gif">

        となる。意味の無い事ですが次も同等の意味を持つ。
          <img src="./././././././././././image/title.gif"><img src="./image/title.gif">

      2) 1.html に backg.jpg の背景を表示したい場合
        <body> の background 属性を利用し、パスは
          <body background="../../image/back.jpg">

        となる。意味の無い事ですが次も同等の意味を持つ。
          <body background=".././../image/./../image/back.jpg">

       上記の場合は2例とも後半の相対パス名での指定は文字数が多く(ファイルが重くなる)、効率が悪いと言える。しかもパス名が長ければ長いほどファイルへのアクセスには時間がかかるだろう。

       ではここで問題。2.html に neko.gif を表示させるのに最も効率のよい相対パスの書き方は?
      <img src=""> (JavaScript使用)
      ヒント:半角英数27文字

    2) 絶対パス

       調べてみないとわからない場合が多いパス。絶対的なパスなのでどこにファイルがあろうが最初のスタートは一緒。
       相対パスに比べると長いことが多く、あまり使わないことが多いが、CGIと通常のURLが異なる場合、CGIを専用のディレクトリ(フォルダ)にいれなければならない場合は重宝するパス。
       絶対パスは必ずスラッシュ(/)から始まる。サーバの環境によってはじまりのスラッシュのあとのディレクトリ指定が異なる。調べる方法はサーバ管理者に尋ねるか、サーバのヘルプページを見るなどしてみてくれたまえ。

      例うちの場合(BIGLOBEのときの)
        index.html => /home22/ryu_1/public_html/index.html
        1.html => /home22/ryu_1/public_html/main/manu/1.html

       しかし最近まで、絶対パス=URLだとうちの管理者は思っていた。現在もそのように説明しているページも多い。絶対パスといわれたらhttp://から始まるURLか、スラッシュから始まる絶対パスかのどちらかと、覚えておこう。
       *サーバに聞くときは「私のホームページのホームディレクトリまでの絶対パスは?」と聞こう。

    おまけ) URL

       1番簡単なのは覚えやすいURLで指定してしまうこと。例の場合、絶対パスの /home22/ryu_1/public_html/ に /~ryu_1/ 当てられてるので サーバ:ポートを入れると

        index.html => http://www2u.biglobe.ne.jp/~ryu_1/index.html
        1.html => http://www2u.biglobe.ne.jp/~ryu_1/main/menu/1.html

      となる。これを絶対パスとよんで説明しているところもある。URLではログの指定や、gifcat.plを使ったカウンタ画像、GIFファイルを読みこんで表示するCGIのGIFファイル などを指定できないぞ。注意して指定しよう。

Click here to visit our sponsor
BACK