- Konu sahibi
- #1
Göreli ve mutlak yol arasındaki temel fark
HTML bağlantısında göreli yol, belgenin temel URL’sine göre çözülür; mutlak yol ise https gibi şemasıyla tam adresi belirtir. Bu nedenle göreli yol, aynı site içindeki dosyalar ve sayfalar için daha taşınabilir olabilirken mutlak yol, özellikle başka bir alan adına veya kesin bir adrese bağlantı verirken kullanılır.
Örneğin aşağıdaki bağlantı mutlak yoldur:
Kod:
<a href="https://example.com/iletisim.html">İletişim</a>
Aşağıdaki bağlantı ise göreli yoldur:
Kod:
<a href="iletisim.html">İletişim</a>
İkinci örneğin hedefi temel URL’ye bağlıdır. Varsayılan temel, belgenin URL’sidir; base öğesi bunu değiştirebilir. Tarayıcı sunucunun fiziksel klasörünü bilmez: URL yolu bir dosyaya veya uygulama rotasına karşılık gelebilir.
Göreli yol nasıl çözülür?
Örneklerde base öğesi yoktur ve URL’ler aynı origin’dedir. Tarayıcı göreli yolu belgenin URL dizinine göre tamamlar. Basit bir statik site yapısını varsayalım:
Kod:
/site
/sayfalar
urun.html
/gorseller
urun.jpg
index.html
urun.html dosyasında urun.jpg dosyasına ulaşmak için bir üst klasöre çıkıp gorseller klasörüne girmeniz gerekir:
Kod:
<img src="../gorseller/urun.jpg" alt="Ürün görseli">
Burada
.. bir üst klasörü ifade eder. ./ veya doğrudan dosya adı, mevcut klasörü ifade eder:
Kod:
<a href="./detay.html">Detay</a>
<a href="detay.html">Detay</a>
Başında tek eğik çizgi bulunan yol ise alan adının kökünden başlar. Bu biçim, tam URL olmadığı için teknik olarak kök tabanlı göreli yol olarak değerlendirilir:
Kod:
<a href="/iletisim.html">İletişim</a>
Sayfa
https://example.com/sayfalar/urun.html adresinde olsa bile bu bağlantı https://example.com/iletisim.html adresini hedefler. Buna karşılık iletisim.html ifadesi /sayfalar/iletisim.html konumuna göre çözülür.Hangi yolu ne zaman kullanmalı?
Karar verirken bağlantının aynı site içinde mi, başka bir sitede mi olduğunu ve sitenin bir alt klasörde yayınlanıp yayınlanmayacağını dikkate alın.
| Yol türü | Örnek | Uygun kullanım |
|---|---|---|
| Mutlak URL | https://example.com/urun | Başka alan adı veya kesin adres |
| Dosyaya göreli | ../urun.html | Sayfalar arası taşınabilir iç yapı |
| Kök tabanlı | /urun.html | Aynı alan adının kökünden başlayan yapı |
Site doğrudan alan adının kökünde yayınlanıyorsa kök tabanlı yollar pratik olabilir. Ancak site
https://example.com/proje/ gibi bir alt klasörde çalışacaksa /urun.html yolu alan adının kökünü hedefler ve /proje/urun.html yerine yanlış konuma gidebilir. Böyle bir taşınabilirlik ihtimali varsa bağlantıları sayfa konumuna göre göreli yazmak veya yayın ortamının temel yolunu doğru yapılandırmak daha güvenlidir.Uygulanabilir kontrol adımları
- Bağlantıyı içeren sayfanın URL’sini ve varsa base öğesini belirleyin. Tarayıcı konsolunda document.baseURI kullanılan temeli gösterir.
- Hedef dosyanın bu klasöre göre nerede olduğunu hesaplayın. Aynı klasördeyse dosya adını, üst klasördeyse her seviye için
../ifadesini kullanın. - Bağlantı başka bir alan adına gidiyorsa
https://ile başlayan tam adres yazın. - Bağlantının bulunduğu sayfayı tarayıcıda açıp bağlantıya tıklayın. Beklenen dosya açılıyorsa yol doğrudur.
- 404 hatası alırsanız önce klasör seviyelerini, dosya adının büyük-küçük harflerini ve dosyanın gerçekten yayınlandığı konumu karşılaştırın. Kök tabanlı bir yol kullanıyorsanız sitenin alt klasörde yayınlanıp yayınlanmadığını da kontrol edin.
Örneğin
/sayfalar/urun.html içinden /gorseller/urun.jpg dosyasına giden bağlantı ../gorseller/urun.jpg olmalıdır. Aynı bağlantıyı gorseller/urun.jpg yazarsanız tarayıcı /sayfalar/gorseller/urun.jpg konumunu arar ve dosya orada değilse sonuç başarısız olur.Sondaki eğik çizgiyi de kontrol edin
https://example.com/proje ile https://example.com/proje/ aynı temel dizini ifade etmez. detay.html ilkinde https://example.com/detay.html, ikincisinde https://example.com/proje/detay.html olur. Uygulama rotalarını fiziksel klasör gibi varsaymadan tarayıcının çözdüğü tam URL’ye bakın.
Sık yapılan hatalar
En yaygın hata, göreli yolun alan adının kökünden başladığını sanmaktır. Başında
/ olmayan yol kullanılan temel URL’nin dizinine göre çözülür. Bir diğer hata, klasör adını atlarken fazla veya eksik ../ kullanmaktır. Her ../ yalnızca bir üst klasöre çıkar.Dosya adlarında büyük-küçük harf farkını göz ardı etmek de özellikle Linux tabanlı sunucularda bağlantının çalışmamasına yol açabilir.
Urun.html ile urun.html aynı dosya olmayabilir. Ayrıca yerel bilgisayarda çalışan mutlak bir dosya yolu olan C:\site\urun.html ifadesi web sitesinde kullanılmamalıdır; sunucudaki HTTP adresi veya doğru göreli yol kullanılmalıdır.Sık sorulan sorular
Mutlak URL her zaman daha mı güvenlidir?
Hayır. Adres kesin olsa da alan adı, protokol veya klasör yapısı değiştiğinde tüm mutlak bağlantıların güncellenmesi gerekir. Aynı site içindeki bağlantılarda proje yapısına uygun göreli yol daha kolay taşınabilir.
Bağlantıdaki #bolum ne anlama gelir?
Bu, URL’nin fragment parçasıdır; normalde aynı belgedeki bir bağlantı noktasına işaret eder. Hedef HTML içinde id="bolum" bulunan öğeye kaydırabilir. Ancak base farklı bir URL belirliyorsa yalnız #bolum bile o temel URL’ye çözülür; bu yüzden beklenmeyen sayfaya gidildiğinde base ayarını da kontrol edin.