Köke göre bağlantılar mı var?


161

Bir sayfadaki tüm bağlantıların kök dizine göreli olmasının bir yolu var mı?

Örneğin, www.example.com/fruits/apples/apple.htmlşöyle bir bağlantı olabilir:

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

Bu bağlantı www.example.com/fruits/apples/fruits/index.htmlveya işaret ediyor www.example.com/fruits/index.htmlmu? Birincisi, bunun yerine 2.'yi işaret etmenin bir yolu var mı?

Yanıtlar:


293

Köke göre bir URL /, benzeyen bir karakterle başlar <a href="https://stackoverflow.com/directoryInRoot/fileName.html">link text</a>.

Gönderdiğiniz bağlantı: <a href="fruits/index.html">Back to Fruits List</a>adlı bir dizinde bulunan ve fruitsbu bağlantının göründüğü html sayfasıyla aynı dizinde bulunan bir html dosyasına bağlanıyor .

Kök göreli bir URL yapmak için şu şekilde değiştirin:

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

Düzenlenen OP, yorumlarda, soruya cevap olarak:

Bu nedenle, www.example.com'a göre / yapacak, kökün ne olduğunu belirtmenin bir yolu var mı, örneğin, kökün www.example.com/fruits/ elma / apple.html?

Evet, hrefveya srcözniteliklerinde URL'nin /önüne bir yol eklenmesi, yolu kök dizine göre yapar. Örneğin, en html sayfası verilen www.example.com/fruits/apples.html, abir href="https://stackoverflow.com/vegetables/carrots.html"sayfaya irade bağlantısını www.example.com/vegetables/carrots.html.

baseEtiket elemanı olsa (o sayfanın taban-uri belirlemenizi sağlar baseetiketi eklenecek olurdu her belirli üssünü kullanma izni için gerekli olan sayfanın, bunun için ben sadece W3 örneğini alıntı edeceğiz:

Örneğin, aşağıdaki BASE bildirimi ve A bildirimi verildiğinde:

<!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>

göreli URI "../cages/birds.gif" şu şekilde çözülür:

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

Alıntı yapılan örnek: http://www.w3.org/TR/html401/struct/links.html#h-12.4 .

Önerilen Okuma:


1
Bunu yaparken /o göreli yapacağı www.example.com, kök i isterseniz, mesela neyi kök olmanın ne belirtmek için bir yol var www.example.com/fruitsiçinde www.example.com/fruits/apples/apple.html?
Click Olumlu oy

1
dinamik olarak bulmanın bir yolu var mı? .NET gibi ~ gibi bir şey? Her ortamda farklı klasör adınız varsa ne olur?
Kremena Lalova

21

kullanım

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

veya

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

1
../path çalıştı ama / path İfade Web'de bir CSS dosyası içinde kullanarak benim için çalışmadı. (Dosya / Dizin ve referans / FarklıDirectory
Clay Nichols

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

3

URL'yi bir ASP.NET uygulamasının sunucu tarafından oluşturuyorsanız ve web sitenizi web sitenizdeki bir sanal dizine (ör. App2) dağıtıyorsanız, örneğin http://www.yourwebsite.com/app2/

sonra sadece ekle

<base href="~/" />

başlık etiketinden hemen sonra.

yani kök göreli kullandığınızda

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

" http://www.yourwebsite.com/app2/Accounts/Login " olarak çözülür

Bu şekilde, dosyalarınıza her zaman nispeten kesinlikle işaret edebilirsiniz;)

Bana göre bu en esnek çözüm.


2
Cevabınız işe yaramıyor. "tilde eğik çizgi" ASP.NET çözümlerinde sunucu tarafında çalışır. Bu soru, sunucu tarafı ASP.NET çözümleriyle ilgili değildir.
Anders Tornblad

1
Teorinizi görüyorum ama işe yarıyor (hem pratikte hem de teoride) Sunucu, HTML'yi oluştururken uygulamanızın kökü ne olursa olsun "tilde eğik çizgisini" değiştirir. Önce denedin mi?
A-Majeed

Tabii ki denedim. Web sunucuları tilde eğik çizgiyi uygulamanın kök diziniyle DEĞİŞTİRMEZ. Bunu yalnızca ASP.NET uygulamaları yapar. Diğer ortamlarda "uygulama" diye bir kavram yoktur.
Anders Tornblad

Hayır ASP.NET kullanmadığımı söylememeliyim. Bu varsayımı yaptınız, ancak cevabınızdaki varsayımdan bahsetmediniz. Ayrıca, soru sunucu çalışma zamanı ortamı hakkında hiçbir şeyden bahsetmez, bu nedenle sorunun bir ASP.NET ile ilgili olduğunu varsaymamalısınız. StackOverflow ile ilgili bir cevap verirseniz, lütfen başka bir soruya değil, soruyu cevapladığınızdan emin olun. Ayrıca, bu sorunun sunucu tarafı ASP.NET çözümleri hakkında olmadığını söyledi.
Anders Tornblad

Javascript
Balaji Birajdar'dan

0

Kökteki images/dizini bulan bir resim etiketine URL vermek için

`logo.png`

aşağıdaki gibi srcbaşlayan URL vermelisiniz /:

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

Bu kod, herhangi bir dizinde sorunsuz olarak çalışıyor olsa bile branches/europe/about.php, logo burada görülebilir.


0

Bu kodu "./" benim için çalıştığı gibi sunucuda root olarak kullan

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

ancak yerel bir makinedeyken kök göreli yol olarak aşağıdaki "../" kodunu kullanın

<a href="../fruits/index.html">Back to Fruits List</a>
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.