- ベストアンサー
URLは絶対パス、相対パス、ルート相対パス
WEBサイトを作成する上で、HTML内に使用するURLの記述方法で悩んでいます。 「絶対パス」、「相対パス」、「ルート相対パス」のどれがいいでしょうか。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
あくまでHTMLだけで作った場合の質問なのか悩んでしまいましたが、追記します。 > 私も最初は相対パスで記述しており、途中でルート相対パスに変更してみたのですが、ローカルでは正> しくリンクしない事に気が付きました。 現在作成されているものがHTMLだけで構成されるならば、環境によっては、ルート相対パスは向かないと思います。 確認されている通り、開発環境と本番環境で異なる為です。 具体的に言うと、開発環境にWebサーバを立てていない場合。 開発環境におけるルート相対パスは、Webサーバを立ててこそ意味があります。 XAMPPでもApache単体でもいいから、インストールした上でDocumentRoot配下で開発を行っていれば、恐らく支障ありませんよ。 その環境を作らないと、作ったソースを丸々本番サーバでアップロードできません。 そういう意味では相対パスは、パス指定を簡素化できればWebサーバいらずですね。 プログラムを走らせる為、どの道Webサーバを立てないと動かせないようなサイトなら、まぁどっちでも好みの問題で、という次元が少なからずあると思います。 どちらでも走りますので。 ルート相対パスも相対パスも、参照するパスがやたら長ったらしいと煩わしい。 ミラーサイトが作成されるという懸念については、クライアントに全ソースをダウンロードしている以上、防ぎようがありません。 簡単だろうが難しかろうが、サイトのコピーは不可能ではないと考えていいです。 つまり、考えるだけ無駄です。 コピーされるのが嫌ならそもそもネット上に公開しない、特定の人物やドメインにのみ許可するなどの対応となるでしょう。 考えるのは、コピーを防ぐ方法よりは、コピーされた後の対応になると思います。 しかしそれも、動的ページ(PHPやらJavaやら使って)なら、クライアントに見えるのは描画が完了したページだけですから、丸ごとクローンというわけにはいかないでしょうね。
その他の回答 (4)
- めとろいと(@naktak)
- ベストアンサー率36% (785/2139)
プロジェクト内ではルート相対パスを使ってます。 相対パスはいっぱい戻る必要があると『../』」が増えすぎて不明瞭。 絶対パスは環境が変わると対応が面倒。 ルート相対パスは、必要な部分(webrootやフレームワーク固有のフロントコントローラなど)から、 実際のディレクトリと一致するので分かり易い。
お礼
ご回答、ありがとうございます。 プロとしてサイト作成されている方なのですね。ルート相対パスを使われているのですね。大変参考になりました。 確かに相対パスは、何個か上位の階層に上がる時は、「../」が連続する場合がありますね。 自分は素人で、それほど知識が無いので、あまり難しい事は出来ませんが、将来的にはPHPやデータベースを使ってやった方が良いのでしょうね。もちろん、その場合もパスの形式は自分で考える必要はあるのでしょうけど。 本当は、既存のCMS等を使って記事を書くのが、パス等を考えず済むので楽なんでしょうが、それをやってしまうと、100%自分の思い通りのサイトにはならないでしょうし、カスタマイズするにも新しい知識を勉強する時間が必要になるでしょうね。 大変参考になりました。ありがとうございました。
- Tasuke22
- ベストアンサー率33% (1799/5383)
私は相対パス派ですね。 サーバの引っ越しで気を使わなくていいし、 テスト環境も全く気にしなくていいので融通性が高いです。 ルート相対パスを使いたくなったら、全体的なディレクトリ構造の見直しをしたいです。 事実、私の設計は画像でも1つのディレクトリにまとめるのではなく、各分野ごとのディレクトリに画像ディレクトリを作り、遠く離れたリンクを避けるようにしていました。 絶対パスは有り得ません。 iTunesが曲の認識を絶対パスで行っていますが、 iTunesのその部分の設計者とそれを容認した管理者はアホだと信じて疑いません。 これで世界中でどれだけのユーザが頭を痛めていることやら、です。
お礼
ご回答、ありがとうございます。 相対パス派なのですね。確かにテスト環境という点では、相対パスが良いかも知れませんね。 遠く離れたリンクを避けるという点でも、相対パスは良いかも知れませんね。パスの長さも考慮して行こうと思います。 私も最初は相対パスで記述しており、途中でルート相対パスに変更してみたのですが、ローカルでは正しくリンクしない事に気が付きました。 私が普段サイトを作成する場合は、ページ数が少なくて、一度作ったらあまり更新しないサイトを作る場合、手打ちでソース書いて、パスの形式にもこだわらず作ります。後からリンクの書き方を変更するのも、さほど大変ではありません。 しかし、今回はバッチ処理を使い、CMSほどちゃんとしたものではありませんが、新しく記事を書くと、そのHTMLを指定した場所に保存し、パスが通るように置換するという処理をしたいので、このシステムを作っている今、リンクの記述方法も決めたいのです。後から変更するのは手間が掛かるからです。 現状の作りかけのシステムでは、ルート相対パスの使用を想定し、一旦ルート階層まで上がって、そこからのルート相対パスを記述するという方式を取っています。ローカルでもテスト出来るようにする為です。 「/aaa/bbb/1.html」から 「/aaa/bbb/2.html」へのリンクなら、 「../../aaa/bbb/2.html」という風に記述されるようにしています。 これをアップロードする時は、「../」が連続する部分は「/」に置換し、 「/aaa/bbb/2.html」になるようにしています。 この方法だと、アップロードする際に簡単に「絶対パス」と、「ルート相対パス」に置換できます。「相対パス」に置換するのは難しいですが。 一つ心配しているのは、ミラーサイトを作られる危険性についてですが、相対パスや、ルート相対パスは、簡単にミラーサイトを作られてしまいますが、絶対パスだと、そのままコピーしただけではミラーサイトにはなりません。 しかし、HTML内の絶対パスを、違うドメインに変更したり、ルート相対パスに置換するのは、正規表現を使った置換処理を行えば簡単に出来てしまいますし、意味がない気もします。又、ミラーサイト作成用のツールもあると思います。 ただ、余程魅力的なサイトを作らないと、ミラーサイトを作られる心配などしなくて良いのかも知れませんが。 iTunesは使っていないので分からないのですが、現在そのような状況になっているのですね。やはりそれも、一度作ってしまったシステムの仕様を変更する難しさがあるのでしょうか。分かりませんが。 ご回答、ありがとうございました。
- eden3616
- ベストアンサー率65% (267/405)
ドメインの変更やサイト移転に伴うサーバーの変更などでアドレスが変わる場合は絶対パスは避けるほうがよいかと。 外部サイトを参照する場合は絶対パスを使用するしかありませんが。 自分の場合はサイト内を跨るリンクはルート相対パスを利用し、 CGIなど特定ディレクトリ以下でのみやり取りを行うパスでは相対パスを使用しています。
お礼
ご回答、ありがとうございます。 やはり、状況によって使い分けるということでしょうか。 「特定ディレクトリ以下でのみやり取りを行うパスでは、相対パスを使用する」というのは大変参考になりました。 その状況に適したパスを考えて使って行こうかと思います。ありがとうございました。
- t_ohta
- ベストアンサー率38% (5238/13705)
それぞれに長所短所があるのでケースバイケースです。 システム全体の構成に応じて使い分ける必要があると思います。
お礼
ご回答、ありがとうございます。 なるほど、ケースバイケースですか。自分の作りたいサイトの構成を見つめ直したいと思います。ありがとうございました。
お礼
再度、ご回答ありがとうございます。 ご回答で気付かされたのですが、おっしゃる通り、考えてみれば、ローカルで仮のWEBサーバを立ててしまえばいいのですね。その発想は無かったです。 「XAMPP」というのは初めて知りました。こういうものがあったのですね。大変参考になりました。今度インストールして試してみようと思います。 つまり、どのようにパスを書くべきかは、テスト環境や、使用する技術等によるのでしょうね。なるべく管理しやすい方法を考えたいと思います。 ミラーサイトにつきましては、考えるだけ無駄なのですね。もしコピーされる事があったら、その時考えたいと思います。動的ページも将来的に作れたらいいなと思います。 大変分かりやすかったです。ありがとうございました。
補足
皆さん、大変参考になりました。本当にありがとうございました。