絶対パス、ときどき相対パス
2007-08-14 Tue[Web制作 > コーディング]
どうもこんばんは。サルサです。
なにやら不正な攻撃を立て続けに受けておりまして、閲覧に支障が出てしまい申し訳ありませんでした。といってこれからも無いとは限らないので、URLに「**.cgi」と付くページに行こうとしてエラーが出たら、あらまあと思ってください。鯖屋さんのご尽力により、通常のhtml閲覧には支障がないようになっています。(といっても見られるのはトップページと、トップページから見える個別ページくらいのもんですが)
さてっと。
「愛用のGrep検索/置換ソフト」のお話に続き、書こう書こうと半年以上考えがまとまらなかった(放置していたとも言う)ネタのうちの一つです。それが、ことWeb制作においてhtmlや画像などへリンクを張る場合に出てくる絶対パス、相対パスという呼び名について。パスは英語で書くと「path」。小径、のような意味ですね。pathつながりで、よくページの上にある
top > 製品情報 > オーディオ > ミニコンポ
のことは「topic path」(日本語でパン屑ナビなど)と言います。けど今回の話とは関係ありません。
えと、絶対/相対パスの話ですね。
相対パスの考え方は単純だから解釈がブレにくいし、今回の主旨ではないんです。問題は「絶対パス」の定義。
「http(s)://」から始まるURLを絶対パスと書いてあるところと、「/(ルート)」からのパスを絶対パスとしているところと両方あるんです。自分は後者で認識していました。前者は普通にURLって言っちゃいますから。
でもネットで調べてみると圧倒的に多かったのが「URL=絶対パス」という説明だったんです。同じ「絶対パス」でも、二つの解釈があるとは気持ちが悪い。…いったいどっち?
各サイトさんによる定義
とりあえず、各サイトさんのパス表記のとらえ方を抜き出してみました。相対パスのことも混ぜていますけど、基本的には「絶対パス」について抜き出したものです。
URLはhttpからはじめてホスト名、パスを全て記述する絶対URLと、一部分だけを指定する相対URLがあります
「/」から書き始めたURLを用いると、サーバーのルートに対する相対URLとして扱われます
リンクパスには、次の 3 種類があります。
絶対パス (http://www.macromedia.com/
support/dreamweaver/contents.html など)。詳細については、絶対パスを参照してください。
ドキュメント相対パス (dreamweaver/contents.html など)。詳細については、ドキュメント相対パスを参照してください。
サイトルート相対パス (/support/dreamweaver/contents.html など)。詳細については、サイトルート相対パスを参照してください。
相対パス:の相対とは、自分が現在いるディレクトリー(カレントディレクトリーと言います)を起点として、そこからの相対的な位置という意味です。
絶対パス:の絶対とは、自分がいる位置を起点にしないで、ルートからの位置を基準にしたパス名という意味です。
http:// から始まる指定は絶対パスでの指定になります。また、ルートディレクトリを基準として位置を表現することも絶対パス指定と呼びます。
絶対パスで指定をするには、「/(スラッシュ)」から始めます。つまり、スラッシュの前にはルートディレクトリのパスが省略されているのです。
パス記述についての三種盛り
自分なりにまとめると、以下の三種類に分類されます。
- eid500.html、./eid500.html、../../eid500.html
呼び名:相対パス、ドキュメント相対パス、完全相対パス、相対アドレス リンク先を、常に自分のいる場所から考えるのが相対パス。リンク元とリンク先の場所の関係によって書き方が変わります。「eid500.html」というファイルにリンクを張るときは、リンク元ファイルの位置によってeid500.html、../eid500.html、log/eid500.html、などという記述になります。(ちなみに同階層の場合は「./eid500.html」と書くのが好み)
- http://www.salchu.net/blog/log/eid500.html
呼び名:URL、URLフルパス、絶対URL、絶対アドレス、ホームページアドレス、絶対パス 同じサーバー内、例えば一個上の階層のファイルへリンクするときにこの表記を使うことは無いと思いますが。
「外部サイトにリンクするとき、もしくは自サイトでもサーバーが違うファイルにリンクするときは絶対パスでね」と指示されたらこちらのことだし、この職場ではこの意味で使うんだと認識しましょう。
- /blog/log/eid500.html
呼び名:ルート相対パス(ルートディレクトリからの相対パス)、サイトルート相対パス(サイトルートからの…)、絶対パス ルート「相対」という言葉が使ってあるからわかりにくいですよね。意味合い的には「ルート絶対パス」のほうが分かりやすい気がするんだけど、ルートディレクトリからみた相対的な位置、ということかな。
とにかく、ルートディレクトリを起点にして考えるのがルート相対パス。ルート(root)は根っこという意味で、一番先頭の「/」はそのサイトの一番上の階層を指します。
前述の通り、絶対パスといえばこれのことかと思っていたから、意外と少数派だったのがびっくりなのよね。制作者でも、使ったことがないという人もいます。最近デザインコースを終えた人は、先生は特に触れなかった、相対パスで習ったとのこと。
どうせ相対パスで書いてあったところで、リンク先の表記や階層が変わった場合は DreamWeaver なら勝手に全ファイル書き換えてくれたりするから関係ないのかしら。どこかに書いてあったとおり、ルート相対を使っていると確かにプレビューしにくかったりするもんなあ。へっ。ブルジョアめ。(最近お気に入りのフレーズ)
結局、絶対パスとはなんのことなのか
上記二番めと三番めについては、リンク元のファイルがどの階層にあろうと、eid500.htmlを示す書き方は一つ。そういう意味では、確かにどちらも絶対パスと表現してもいいわけなんですね。
ただしわかりにくいので、やっぱり自分は前者をURL(もしくはURLフルパス、絶対URL)、後者をルート相対パスと呼ぶことにします。同じ言葉でも職場や人によって違う意味合いを持つのであれば、一番誤解のない呼び方をしていた方が無難ですから。
もちろん、その職場で「これを絶対パスと言っている」という場合はそれに習えばいいわけで、そういう意味ではこれらの言葉も「相対的」と言えるわけですな。ああややこしい。
すっきりしたような、しないような感じですが、少なくとも自分の中では系統立てることができたのでいいや。今まであまり深く考えたこと無かったですから。
で、これらのパスをどう制作で使い分けているかというお話はまた今度。さて、今日も熱帯夜ですが、がんばって寝るとします。
<< AN HTTPDでFirefoxのCSSが効かない件 | main | 部屋とエアコンと扇風機と私 >>
同じカテゴリの新着記事
- CSSエディタのCSSEditを愛用してます。 (2009-04-21)
- コーディングに慣れない人のコーディング (2008-10-31)
- 久しぶりのIE確認でCSS的衝撃的事実発覚 (2008-07-22)
- インデントの話ふたたび (2008-02-24)
- 派遣コーダーのユーウツ・2 (2008-02-23)
- ブログの一言コメントを楽に更新する (2007-12-06)
- コーダーの制作ルールをちょっと考える (2007-09-05)
- 絶対パス、ときどき相対パス (2007-08-14)
- 愛用のGrep検索/置換ソフト (2007-08-08)
- ブログパーツが表示されない理由(わけ) (2007-07-12)