web-dev-qa-db-ja.com

開発者が各相対パスの先頭にスラッシュを配置するのはなぜですか?

私は友人のためにいくつかのコードを調べていますが、自分のサイトを構築した開発者は、すべての相対srchref、およびincludeをスラッシュで開始していることを発見しました_/_。

例えば:

_src="/assets/js/jquery.js"
_

これを見たことがありません。だから私の質問は、なぜ開発者は相対パスの先頭にスラッシュ_/_を置くのでしょうか?

48
stefmikhail

パスをルート化するために行われます(絶対パスにします)。

パスが相対パスではなく、サイトのルートから読み取られるようにします。

これにより、ファイルを移動でき、異なるリソースへのリンクを変更する必要がなくなります。

あなたの例を使用して:

src="/assets/js/jquery.js"

参照ファイルが(たとえば)相対パスを使用して/pages/admin/main.htmlにある場合は、次を使用します。

src="../../assets/js/jquery.js"

ファイルを子ディレクトリに移動するとします。元のルートパスを変更する必要はありませんが、相対パスを変更する必要があります。

src="../../../assets/js/jquery.js"
69
Oded

@ Oded's answer を追加すると、スラッシュによってURLが絶対になります。

例えば:

/foo/bar/baz.css

これは次のように翻訳されます:

http://www.example.com/foo/bar/baz.css

しかし、スラッシュがないと、状況は少し異なります。

foo/bar/baz.css

これにより、ブラウザーはcurrentフォルダー(ルートフォルダーではない)でディレクトリfooを検索し、その後のディレクトリとファイル。


また、たとえば次のHTMLをご覧ください。

<script type="text/javascript" src="foo.js"></script>

HTMLファイルを別のフォルダーに移動した場合、foo.jsはHTMLファイルとともに移動されません。

ただし、絶対URLを使用する場合:

<script type="text/javascript" src="/foo.js"></script>

次に、JSファイルがロードされます[〜#〜] exactly [〜#〜]from http://www.example.com/foo.js HTMLファイルの場所に関係なく。

30
Blender

これは、アセットがWebサーバーの「ルート」から取得されるようにするためです。

例えばホストはwww.example.com URLはwww.example.com/assets/js/jquery.js

私は自分の仮想ホストでライブを確実にしたいプロジェクトでこれを行います。

問題は本当にそれらの資産が含まれている場所になります。たとえば、アセットが/ help/pages/faqから含まれている場合、開発者は、サイトが変更されていないホストでホストされているときにパスが正しく機能することを確認できます。 example.com。

相対パス「assets/js/jquery.js」を使用する場合の問題は、アセットが/ help/pages/faqsから含まれている場合、パスがその開始点からの相対パスになることです。 /help/pages/faqs/assets/js/jquery.js

役立つことを願っています

8
Si Griffiths