Memiliki tautan relatif ke root?


161

Apakah ada cara agar semua tautan pada halaman relatif terhadap direktori root?

Misalnya, pada www.example.com/fruits/apples/apple.htmlsaya dapat memiliki tautan yang mengatakan:

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

Apakah tautan ini menunjuk ke www.example.com/fruits/apples/fruits/index.htmlatau www.example.com/fruits/index.html? Jika yang pertama, apakah ada cara untuk mengarahkannya ke yang ke-2?

Jawaban:


293

URL relatif-root dimulai dengan /karakter, untuk terlihat seperti <a href="https://stackoverflow.com/directoryInRoot/fileName.html">link text</a>.

Tautan yang Anda poskan: <a href="fruits/index.html">Back to Fruits List</a>sedang menautkan ke file html yang terletak di direktori bernama fruits, direktori berada di direktori yang sama dengan halaman html di mana tautan ini muncul.

Untuk menjadikannya URL relatif-root, ubahlah ke:

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

Diedit dalam menanggapi pertanyaan, dalam komentar, dari OP:

Jadi melakukan / akan membuatnya relatif terhadap www.example.com, apakah ada cara untuk menentukan apa root, misalnya bagaimana jika saya ingin root menjadi www.example.com/fruits di www.example.com/fruits/ apel / apple.html?

Ya, prefacing URL, dalam atribut hrefatau src, dengan /akan membuat path relatif ke direktori root. Sebagai contoh, mengingat halaman html di www.example.com/fruits/apples.html, yang adari href="https://stackoverflow.com/vegetables/carrots.html"kehendak tautan ke halaman www.example.com/vegetables/carrots.html.

The basetag elemen memungkinkan Anda untuk menentukan dasar-uri untuk halaman yang (meskipun basetag harus ditambahkan ke setiap halaman di mana itu perlu untuk menggunakan basis tertentu, untuk ini saya hanya akan mengutip contoh W3 ini:

Misalnya, diberikan deklarasi BASE berikut dan deklarasi 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 relatif "../cages/birds.gif" akan memutuskan untuk:

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

Contoh dikutip dari: http://www.w3.org/TR/html401/struct/links.html#h-12.4 .

Bacaan yang disarankan:


1
Demikian /akan membuatnya relatif www.example.com, apakah ada cara untuk menentukan apa akar adalah, misalnya bagaimana jika saya ingin root menjadi www.example.com/fruitsdi www.example.com/fruits/apples/apple.html?
Klik Upvote

1
adakah cara untuk menemukannya secara dinamis? Sesuatu seperti ~ di .NET? Apa yang akan terjadi jika di setiap lingkungan Anda memiliki nama folder yang berbeda?
Kremena Lalova

21

Menggunakan

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

atau

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

1
../path berhasil tetapi / path tidak berfungsi untuk saya di Expression Web menggunakannya dalam file CSS. (File ada di / Direktori dan referensi / DifferentDirectory
Clay Nichols

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

3

Jika Anda membuat URL dari sisi server dari sebuah aplikasi ASP.NET , dan menggunakan website Anda ke direktori virtual (misalnya app2) di website Anda yaitu http://www.yourwebsite.com/app2/

lalu masukkan saja

<base href="~/" />

tepat setelah tag judul.

jadi setiap kali Anda menggunakan root relatif misalnya

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

akan memutuskan untuk " http://www.yourwebsite.com/app2/Accounts/Login "

Dengan cara ini Anda selalu dapat menunjuk ke file Anda relatif-mutlak;)

Bagi saya ini adalah solusi yang paling fleksibel.


2
Jawaban Anda tidak berhasil. "tilde slash" berfungsi di sisi server dalam solusi ASP.NET. Pertanyaan ini bukan tentang solusi ASP.NET sisi server.
Anders Tornblad

1
Saya melihat teori Anda tetapi TIDAK berfungsi, (baik dalam praktik maupun dalam teori) Server mengganti "tilde slash" dengan apa pun yang menjadi akar aplikasi Anda saat membuat HTML. Sudahkah Anda mencobanya terlebih dahulu?
A-Majeed

Tentu saja saya mencobanya. Server web TIDAK mengganti tilde slash dengan root aplikasi. Hanya aplikasi ASP.NET yang melakukan ini. Di lingkungan lain, tidak ada konsep seperti "aplikasi".
Anders Tornblad

Tidak, saya seharusnya tidak mengatakan saya tidak menggunakan ASP.NET. Anda membuat asumsi itu, tetapi tidak menyebutkan asumsi dalam jawaban Anda. Selain itu, pertanyaannya tidak menyebutkan apa pun tentang lingkungan runtime server, jadi ANDA seharusnya tidak berasumsi bahwa pertanyaannya adalah tentang ASP.NET. Jika Anda memberikan jawaban di StackOverflow, pastikan Anda menjawab pertanyaan - dan bukan pertanyaan lain. Juga, saya TIDAK mengatakan bahwa pertanyaan ini bukan tentang solusi ASP.NET sisi-server.
Anders Tornblad

Bekerja untuk saya ketika saya memberikan tautan dari javascript
Balaji Birajdar

0

Untuk memberikan URL ke tag gambar yang menempatkan images/direktori di root like

`logo.png`

Anda harus memberikan srcURL dimulai dengan /sebagai berikut:

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

Kode ini berfungsi di direktori mana pun tanpa masalah meskipun Anda branches/europe/about.phpmasih berada di logo dapat dilihat di sana.


0

Gunakan kode ini "./" sebagai root di server karena berfungsi untuk saya

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

tetapi ketika Anda menggunakan mesin lokal gunakan kode berikut "../" sebagai path relatif root

<a href="../fruits/index.html">Back to Fruits List</a>
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.