ルートに関連するリンクがありますか?


161

ページ上のすべてのリンクをルートディレクトリに対して相対的にする方法はありますか?

たとえば、www.example.com/fruits/apples/apple.html私は言っているリンクを持つことができます:

<a href="fruits/index.html">Back to Fruits List</a>

このリンクはwww.example.com/fruits/apples/fruits/index.htmlまたはを指していwww.example.com/fruits/index.htmlますか?最初の場合、代わりに2番目を指すようにする方法はありますか?

回答:


293

ルート相対URLは、の/ような文字で始まります<a href="https://stackoverflow.com/directoryInRoot/fileName.html">link text</a>

あなたが投稿したリンク:<a href="fruits/index.html">Back to Fruits List</a>という名前のディレクトリにあるhtmlファイルにfruitsリンクしています。このディレクトリは、このリンクが表示されるhtmlページと同じディレクトリにあります。

ルート相対URLにするには、次のように変更します。

<a href="/fruits/index.html">Back to Fruits List</a>

質問への回答、コメント、OPからの編集

/を実行すると、www.example.comに対して相対的になります。たとえば、ルートをwww.example.com/fruits/のwww.example.com/fruitsにしたい場合は、ルートを指定する方法があります。 apples / apple.html?

はい、hrefまたはsrc属性内のURLの前にa /を付けると、ルートディレクトリからの相対パスになります。たとえば、のHTMLページが指定されているwww.example.com/fruits/apples.html場合、aof href="https://stackoverflow.com/vegetables/carrots.html"はそのページにリンクしますwww.example.com/vegetables/carrots.html

baseタグ要素にはかかわらず、(あなたがそのページのベースURIを指定することができますbaseタグが追加されなければならないすべてのこのため、特定のベースを使用することが必要であったのページ私は単にW3の一例を挙げます:

たとえば、次のBASE宣言とA宣言があるとします。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
   "http://www.w3.org/TR/html4/strict.dtd">
<HTML>
 <HEAD>
   <TITLE>Our Products</TITLE>
   <BASE href="http://www.aviary.com/products/intro.html">
 </HEAD>

 <BODY>
   <P>Have you seen our <A href="../cages/birds.gif">Bird Cages</A>?
 </BODY>
</HTML>

相対URI "../cages/birds.gif"は次のように解決されます。

http://www.aviary.com/cages/birds.gif

引用例:http://www.w3.org/TR/html401/struct/links.html#h-12.4

推奨読書:


1
そう/、それは相対的に行いますwww.example.com、ルートは私が欲しい場合は、例えばどのようなルートがあることを何であるかを指定する方法があるwww.example.com/fruitsにはwww.example.com/fruits/apples/apple.html
2011

1
それを動的に見つける方法はありますか?〜.NETのようなものですか?各環境で異なるフォルダー名を使用するとどうなりますか?
Kremena Lalova 14

21

使用する

<a href="/fruits/index.html">Back to Fruits List</a>

または

<a href="../index.html">Back to Fruits List</a>

1
../path は機能しましたが、CSSファイル内で使用するExpression Web では/ pathが機能しませんでした。(ファイルは / Directoryに あり、/ DifferentDirectory
Clay Nichols '27


3

あなたはからURLを作成する場合は、サーバー側ASP.NETアプリケーション、およびにあなたのウェブサイトを展開し、仮想ディレクトリウェブサイトIEで(例えばAPP2) http://www.yourwebsite.com/app2/

次に挿入するだけです

<base href="~/" />

タイトルタグの直後。

だからあなたがルート親戚を使うときはいつでも

<a href="/Accounts/Login"/> 

「に解決する http://www.yourwebsite.com/app2/Accounts/Login」にます

このようにして、常に比較的絶対にファイルを指すことができます;)

私にとって、これは最も柔軟なソリューションです。


2
あなたの答えは単に機能しません。「チルダスラッシュ」は、ASP.NETソリューションのサーバー側で機能します。この質問は、サーバー側のASP.NETソリューションに関するものではありません。
Anders Tornblad、2014年

1
私はあなたの理論を理解していますが、それは機能します(実際にも理論的にも)サーバーは、HTMLを生成するときに「チルダスラッシュ」をアプリケーションのルートであるものに置き換えます。最初に試しましたか?
A-Majeed 2014年

もちろん試してみました。Webサーバーは、チルダスラッシュをアプリケーションのルートに置き換えません。これを行うのはASP.NETアプリケーションだけです。他の環境では、「アプリケーション」のような概念はありません。
Anders Tornblad、2014年

いいえ、ASP.NETを使用していないと言う必要はありません。あなたはその仮定をしましたが、あなたの答えでその仮定について言及しませんでした。また、質問ではサーバーランタイム環境について何も触れられていないため、質問がASP.NETに関するものであると想定してはなりません。StackOverflowで回答する場合は、他の質問ではなく、必ず質問に回答してください。また、私はこの質問はサーバー側のASP.NETソリューションに関するものではないと言いました。
Anders Tornblad、2014年

私がjavascriptからリンクをレンダリングしたときに私のために働いた
Balaji Birajdar

0

次のimages/ようにルート内のディレクトリを検索するイメージタグへのURLを指定するには

`logo.png`

次のようにsrc始まるURLを指定する必要があります/

<img src="/images/logo.png"/>

このコードは、あなたがbranches/europe/about.phpまだロゴがそこにあるのを見ることができたとしても、どんなディレクトリでも問題なく機能します。


0

このコード "./"をサーバーのrootとして使用してください。

<a href="./fruits/index.html">Back to Fruits List</a>

ローカルマシンを使用している場合は、ルートの相対パスとして次のコード "../"を使用します

<a href="../fruits/index.html">Back to Fruits List</a>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.