- ベストアンサー
相対パスと絶対パスの違いと使い方
- WEBページを作る際、相対パスと絶対パスのどちらを使うべきか迷うことがあります。相対パスは現在のファイルからの相対的な位置を示し、絶対パスは全体の位置を示します。
- 相対パスはファイルの位置関係が変わらない場合に使われ、絶対パスはファイルの位置関係が変わる場合に使われます。
- 絶対パスはURLが変更されてもリンクが正しく機能するため、ドメインの変更を考慮する場合には絶対パスの使用が推奨されます。また、一括置換ソフトを使用すればドメインの変更時の問題は解決できます。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
><a href="/index.html">という風に書けばいいのでしょうか? >しかし、このように書くと、bbbディレクトリの中のindex.htmlファイルにリンクしてしまうと思うのですが… いいえ。同じ階層のファイルにリンクするときは、 href="index.html" と先頭にスラッシュを書きません。(これは相対パス) 先頭がスラッシュだと、ホストのトップレベルを意味します。先頭がスラッシュなら絶対パスです。
その他の回答 (6)
- notnot
- ベストアンサー率47% (4900/10358)
No2,No4です。 >ドメインが変わったら、その部分だけ一括置換ソフトで書き換えればすむことですよね!! もしかして、 「絶対パスとは、href="http://example.com/" のようなもの」と思っていますか? href="/" と書いておけばドメインには無関係になります。 どれも絶対パスです。 (1) href="http://example.com/top.html" (スキームとホスト名付) http/httpsが変わったり、ホストが変わったりしたら書き換えが必要 (2) href="//example.com/top.html" (ホスト名付) http/httpsが変わっても書き換え不要、ホストが変わったりしたら書き換えが必要 (3) href="/top.html" (パス名のみ) http/httpsが変わったり、ホストが変わったりしても書き換え不要
お礼
お礼が遅くなってしまい申し訳ありません。 絶対パスは、サーバードメインも含むものと思っておりました。。。 たとえば、 http://aaa.jp/bbb/ccc.htmlファイルから、 http://aaa.jp/index.htmlにリンクを張る場合、 <a href="/index.html">という風に書けばいいのでしょうか? しかし、このように書くと、bbbディレクトリの中のindex.htmlファイルにリンクしてしまうと思うのですが… いつも私は、<a href="../index.html">と書いています…(←コレは相対パスですよね)
- ORUKA1951
- ベストアンサー率45% (5062/11036)
>今回の場合、index.htmlというファイルがたくさんできてきて、どのインデックスに飛んでいるのかがわからなくなってしまうんです… これは使用しているアプリケーションのマニュアルを見てください。ウィンドウのタイトルバーにファイルパスを表示させれば済むのではないかと・・。 (添付画像はEmEditor・・) ローカルサーバーとは、たとえばapacheを自分のパソコンにインストールして、 http://local.host/index.html で、fille:\\\D:\homepage\html3\index.htmlファイルにアクセスできるようにするということです。 hrefやsrcの値を読み取って、それがどのファイルであるか判断するのはブラウザの役割です。 現在使用しているファイルが、 http://local.host/books/index.html であれば、uriの値が、/images/photo/01.jpgであれば、ブラウザはそのファイルが http://local.host/images/photo/01.jpgであると判断して、local.hostに対して、/images/photo/01.jpgを要求します。 もし使用しているファイルが fille:\\\D:\homepage\html3\index.html であれば、自身のファイルサーバーに対して、 fille:\\\D:\images\photo\01.jpg を要求します。そんなのありませんから・・ 相対パスで、../images/photo/01.jpgでしたら fille:\\\D:\homepage\images\photo\01.jpg を要求します。 絶対パスと、相対パスの不整合が生じますから、ローカルサーバーがないうちは、相対パスで記述するしかないでしょう。 なお、firefoxのアドオンのserver Swicherを使用すると、ファイルサーバー(エクスプローラ)、ローカルサーバー(あれば)、リモートサーバーを切り替えてテストはできます。
お礼
回答ありがとうございます。 ローカルサーバーの意味を理解しました。 実は、ローカルサーバーも立てています。(ルーターのポート転送も設定して、 外部にも公開はしていますが、ドメインを取得していないのでIPアドレスそのままですが(笑) >タイトルバーに(略) というよりも、ソースを書いている際に、あのindex.htmlに飛びたいな」と思ったときに、「あれ?『../』はいくつ??」って感じに・・・ 今いるのがどのインデックスなのかはあまり迷わないんですけれど でも、ビジュアルサイトビューではわからなくなるので、ビルダーのマニュアルを読んでみたいと思います。 IEでは、file://○○○/という風に、ディレクトリ名で終わらせると、エクスプローラーでそのフォルダを開いてしまうんですよね(笑)
- notnot
- ベストアンサー率47% (4900/10358)
No2です。 >また、TOPページへのリンクも相対パスになっています。 そうすると、そのページを他の階層に移動させたとき(一段下にディレクトリを付くって下ろすとか)に、書き換えが必要ですよね。 サイト全体で共有するファイル群についても同じことが言えます。
お礼
>そうすると、そのページを他の階層に移動させたとき(一段下にディレクトリを付くって下ろすとか)に、書き換えが必要ですよね。 そうなんです… 一回それでいやな目にあって(笑) たぶん数ページでそんな事言っちゃいけないんでしょうけど… よく、ネットで「100ページのリンクすべて書き換える羽目になりました。」 という方を見かけますが、それは避けたいな…と… これからTOPページなどは、絶対パスで行うことにします。 ドメインが変わったら、その部分だけ一括置換ソフトで書き換えればすむことですよね!!
webの場合ホストに用意されている『パブリック』フォルダに作成したデータはアップされます。 作成時に『index.html』を基準にリンクを張りますので、相対アドレスです。 サイト内から外部データにアクセスする場合は『絶対アドレス』ですね。 ドメインを移行する時は作成したフォルダの中身をアップすればOKです。 絶対アドレスー>”http://okwave.jp/”,HD/image/1.jpg 相対アドレスー>”././file.html" この場合一番左が『index.html』の位置で、『file.htm』はXXXフォルダ内に存在 index.htmlーーーXXXフォルダーーーfile.htm *PCで作成し、アップして動作していない場合は『絶対アドレス』を使っている時が有る。 (フォルダを作成せずに行っている)
お礼
回答ありがとうございます。 私としては、相対パスと絶対パスの違いは理解しているつもりです。 しかし、どちらを使うのがWEBページとして最適なのかどうかがわかりません… きっと、人によってすべて相対パスで行う人と、 絶対パスで行う人がいるのかと思います。 私としては、 正直どちらがよいのかわかりません。 かといって、自分のサイト内でリンクするのに両方を混ぜるのはちょっと抵抗があります… 今は、HPビルダーを使っています。 ビジュアルサイトビューでは、相対パスでなければ機能しない気がするので、 相対パスにしようかと思ったり、 各ファイルへのアドレスが絶対パスを使用すれば、どのディレクトリにあるHTMLファイルでも同じものが使えるので、ヘッダーなどがまったく同じものを使いまわせるなぁ~と…
- notnot
- ベストアンサー率47% (4900/10358)
ひとかたまりのファイルの中で他のファイルを参照するなら相対パス。 サイトの中で共通で使う画像やcss、JavaScriptファイルなどを参照するなら絶対パス。 あと、当然ですが、サイトの中で固定アドレス的に使う物は絶対パス。TOPページを参照する href="/" とか href="/copyright.html" とか。
お礼
回答ありがとうございます。 今のところ、CSSやジャバスクリプト、画像ファイルなどもすべて相対パスで行っています。 また、TOPページへのリンクも相対パスになっています。 このようなものは絶対パスのほうがいいのでしょうか?
- ORUKA1951
- ベストアンサー率45% (5062/11036)
相対パスでよいです。絶対パスを利用するときはローカルサーバーがないと現実的ではありません。 たとえば、<img src="/images/photo/viewFromsea.jpg" ****>では、表示されませんね。 >時々ドコに飛んでいるのかわからなくなることがあります これは、ディレクトリ構成がまずい・・ サイトリンクの構成などを伝えるにはどうすれば? - HTML - 教えて!goo ( http://okwave.jp/qa/q7514366.html#a1 )のように、きちんと系統だって作成していれば迷わないはずです。
お礼
回答ありがとうございます。 ローカルサーバー…とは…どういうことでしょうか…? サイトのディレクトリ構成ですが、参考URLのとおりそのままに作っています。 (自分は、ファイルを整理するのが好きなタイプのようで…なので、自動で保存するソフトとかってすごく嫌いなんです(笑)撮りためた写真とかも全部手動でフォルダわけして…という感じに) ただ、今回の場合、index.htmlというファイルがたくさんできてきて、どのインデックスに飛んでいるのかがわからなくなってしまうんです…
お礼
回答ありがとうございます。 なるほど。そのような違いがあったのですね。 これからまとめて直して行こうと思います。