Mutlak ve göreli URL'ler


214

Bu iki URL türü arasındaki farkları bilmek istiyorum: göreli URL'ler (resimler, CSS dosyaları, JS dosyaları vb.) Ve mutlak URL'ler.

Ayrıca hangisini kullanmak daha iyidir?

Yanıtlar:


191

Genel olarak, göreli URL'leri kullanmak en iyi yöntem olarak kabul edilir, böylece web siteniz şu anda dağıtıldığı temel URL'ye bağlı kalmaz. Örneğin, yerel ana bilgisayarda ve genel alan adınızda değişiklik yapmadan çalışabilecektir.


6
+1 katılıyorum. Mutlak URL'lerin daha iyi olduğu (örneğin bir CDN kullanırken) veya içerik web sitesini değiştirmeniz gerektiğinde (birkaç) zaman olabilir. Bir alan adı aramak, göreli URL IMHO'yu aramaktan çok daha kolaydır.
Sune Rievers

67
Bakım amacıyla, alan adı olmadan mutlak URL'leri kullanmak daha kolay olabilir. Yani StackOverflow'da bu soruya bağlantı kurmak için mutlak URL / '/ sorular / 2005079 / mutlak-göreli-url'ler' kullanın. Öndeki '/' URL'yi mutlak yapar. Bu yaklaşım, dosyalarınızı hareket ettirdiğinizde veya projenizin dizin yapısını değiştirdiğinizde işe yarar.
Mike

10
@Baumr Ama bunu yapabilir misin? Ben kesinlikle bu yöntemi kullanmak hayranıyım / savunucusu, ama daha büyük bir çerçeve içine almak ve büyük refactorings kötü bir şekilde göz korkutucu / dehşet verici bir görevdir. Akıllı bir IDE'de bile hepsini değiştirmiş olabileceğinizi düşündüğünüz halde, dizelere kodlanmış veya dinamik olarak oluşturulmuşlarsa çoğu zaman kaçırılabilirler. Bunun en kötü yanı, genellikle cevapsız referansların çözümünüz üretime geri dönene kadar yakalanmamasıdır ... :(
dudewad

31
@ Köke göreli URL'leri neden 'mutlak' olarak adlandırıyorsunuz?
törzsmókus

4
@ törzsmókus iyi bir soru. Düzenlememe izin vermiyor ve kök akraba terimiyle bile karşılaşmadan yıllar önce olmuştu.
Mike

237

Mutlak veya göreli URL'ler kullanmalı mıyım?

Mutlak URL'lerle, şema (ör. Http / https) ve ana bilgisayar adı (ör. Alanadiniz.com.tr) dahil olmak üzere URL'leri hiç yapmazsanız (yerel kaynaklar için) sürdürmek ve hata ayıklamak korkunç olacaktır.

Diyelim ki kodunuzdaki her yerde mutlak URL kullandınız <img src="http://yourdomain.com/images/example.png">. Şimdi gideceğiniz zaman ne olacak:

  • başka bir şemaya geçme (örn. http -> https)
  • alan adlarını değiştirin (test.alanadiniz.com.tr -> alanadiniz.com.tr)

İlk örnekte ne olacağı, sayfada istenen güvenli olmayan içerik hakkında uyarılar alacağınızdır. Çünkü tüm URL'leriniz http (: //alanadiniz.com/images/example.png) kullanmak için sabit kodlanmıştır. Sayfalarınızı https üzerinden çalıştırırken tarayıcı, bilgilerin sızmasını önlemek için tüm kaynakların https üzerinden yüklenmesini bekler.

İkinci örnekte, sitenizi test ortamından yayınlarken, tüm kaynakların canlı alan adınız yerine hala test alanınıza işaret ettiği anlamına gelir.

Dolayısıyla, mutlak veya göreli URL kullanılıp kullanılmayacağı hakkındaki sorunuzu yanıtlamak için: her zaman göreli URL'ler kullanın (yerel kaynaklar için).

Farklı URL'ler arasındaki farklar nelerdir?

İlk olarak, kullanabileceğimiz farklı URL türlerine bir göz atalım:

  • http://yourdomain.com/images/example.png
  • //yourdomain.com/images/example.png
  • /images/example.png
  • images/example.png

Bu URL'ler sunucuda hangi kaynaklara erişmeye çalışıyor?

Aşağıdaki örneklerde, web sitesinin sunucuda aşağıdaki konumdan çalıştığını varsayıyorum /var/www/mywebsite.

http://yourdomain.com/images/example.png

Yukarıdaki (mutlak) URL kaynağa erişmeye çalışır /var/www/website/images/example.png. Bu tür bir URL, yukarıda belirtilen nedenlerle kendi web sitenizden kaynak istemekten her zaman kaçınmak istediğiniz bir şeydir . Ancak onun yeri var. Örneğin, bir web siteniz varsa http://yourdomain.comve harici bir alandan https üzerinden bir kaynak istemek istiyorsanız, bunu kullanmalısınız. Örn https://externalsite.com/path/to/image.png.

//yourdomain.com/images/example.png

Bu URL kullanılan geçerli şemaya göre görecelidir ve harici kaynaklar (resimler, javascripts vb.) Dahil edilirken neredeyse her zaman kullanılmalıdır.

Bu tür bir URL'nin yaptığı, üzerinde bulunduğu sayfanın geçerli şemasını kullanmaktır. Bu, sayfada olduğunuz http://yourdomain.comve o sayfada, resmin <img src="//yourdomain.com/images/example.png">URL'sinin çözeceği bir resim etiketi olduğu anlamına gelir http://yourdomain.com/images/example.png.
Sayfada http**s**://yourdomain.comve o sayfada bir resim etiketi <img src="//yourdomain.com/images/example.png">olduğunda görüntünün URL'si çözümlenir https://yourdomain.com/images/example.png.

Bu ihtiyaç olmadığında https üzerinden yükleme kaynaklarını engellemek ve onu otomatik olarak https üzerinden emin kaynak istenen yapar edilir gerekli.

Yukarıdaki URL, sunucu tarafında önceki URL ile aynı şekilde çözümlenir:

Yukarıdaki (mutlak) URL kaynağa erişmeye çalışır /var/www/website/images/example.png.

/images/example.png

Yerel kaynaklar için bu kaynaklara başvurmak için tercih edilen yöntemdir. Bu, /var/www/mywebsiteweb sitenizin belge köküne ( ) dayanan göreli bir URL'dir . Bu, sahip <img src="/images/example.png">olduğunuzda her zaman çözüleceği anlamına gelir /var/www/mywebsite/images/example.png.

Bir noktada alan adını değiştirmeye karar verirseniz, göreli olduğu için yine de çalışır.

images/example.png

Bu, bir öncekinden biraz farklı olmasına rağmen göreli bir URL'dir. Bu URL geçerli yola göre. Bunun anlamı, sitede nerede olduğunuza bağlı olarak farklı yollara çözümlenmesidir.

Örneğin, sayfadayken http://yourdomain.comve kullandığınızda <img src="images/example.png">sunucuda /var/www/mywebsite/images/example.pngbeklendiği gibi çözümlenir , ancak sayfadayken http://yourdomain.com/some/pathve tam olarak aynı resim etiketini kullandığınızda aniden çözülür /var/www/mywebsite/some/path/images/example.png.

Ne zaman kullanılır?

Harici kaynaklar talep ederken, büyük olasılıkla şemaya göre bir URL kullanmak istersiniz (farklı bir şemayı zorlamak istemiyorsanız) ve yerel kaynaklarla uğraşırken belge köküne dayalı göreli URL'ler kullanmak istersiniz.

Örnek bir belge:

<!DOCTYPE html>
<html>
    <head>
        <title>Example</title>
        <link href='//fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700' rel='stylesheet' type='text/css'>
        <link href="/style/style.css" rel="stylesheet" type="text/css" media="screen"></style>
    </head>
    <body>
        <img src="/images/some/localimage.png" alt="">
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js" ></script>
    </body>
</html>

Bazı (tür) kopyalar


2
Mutlak URL kullanmak sayfayı göreli URL kullanmaktan daha hızlı yüklüyor mu? (Göreli yolu çözmek için harcanan zaman?)
shasi kanth

2
Mümkün olan herhangi bir fark o kadar küçük olurdu ki, ölçülebilirse endişelenmeniz gereken bir şey değildir.
PeeHaa


8
Bu yanıt, mutlak URL'lerin dinamik olarak oluşturulmadığını varsayar ve bu da bahsedilen her sorunu çözer.
Yok

2
J.Money doğru. Modern web çerçeveleri, sayfalarınızdan birinden sayfalarınızdan birine URL'ler oluşturmanıza olanak tanıyan "ters yönlendirme" kavramına sahiptir (aynı web sitenizdeki başka bir sayfada olması gerekir). Bunlar, bir URL'ye bir ad vermenize ve ardından URL yerine bu adı kullanmanıza olanak tanır. Bu şekilde, URL'yi değiştirmek isterseniz, URL'yi tek bir yerde değiştirebilirsiniz, çünkü diğer her yerde bu URL'ye yalnızca adıyla atıfta bulunabilirsiniz.
Kevin Wheeler

65

Şuna bakın: http://en.wikipedia.org/wiki/URI_scheme#Generic_syntax

foo://username:password@example.com:8042/over/there/index.dtb;type=animal?name=ferret#nose
\ /   \________________/\_________/ \__/            \___/ \_/ \_________/ \_________/ \__/
 |           |               |       |                |    |       |           |       |
 |       userinfo         hostname  port              |    |       parameter query  fragment
 |    \_______________________________/ \_____________|____|____________/
scheme                  |                               | |  |
 |                authority                           |path|
 |                                                    |    |
 |            path                       interpretable as filename
 |   ___________|____________                              |
/ \ /                        \                             |
urn:example:animal:ferret:nose               interpretable as extension

Mutlak bir url, "yol" kısmından önceki parçaları içerir - başka bir deyişle, şemayı ( httpin http://foo/bar/baz) ve ana bilgisayar adını ( fooin http://foo/bar/baz) (ve isteğe bağlı olarak bağlantı noktası, userinfo ve bağlantı noktası) içerir.

Göreli URL'ler bir yolla başlar.

Mutlak URL'ler, mutlaktır: kaynağın konumu yalnızca URL'ye bakarak çözülebilir. Göreli bir url bir anlamda eksiktir: çözmek için şemaya ve ana makine adına ihtiyacınız vardır ve bunlar genellikle geçerli bağlamdan alınır. Örneğin, adresindeki bir web sayfasında

http://myhost/mypath/myresource1.html

böyle bir link koyabilirsin

<a href="pages/page1">click me</a>

Gelen hrefbağlantının özniteliği, göreceli bir url kullanılan s ve tıklandığında ise, onu takip etmek için çözülmesi gerekmektedir. Bu durumda, mevcut bağlam

http://myhost/mypath/myresource1.html

şema, ana makine adı ve bunların giden yolun böylece alınır ve başına ilave pages/page1verimli,

http://myhost/mypath/pages/page1

Bağlantı şu olsaydı:

<a href="/pages/page1">click me</a>

( /url'nin başlangıcında görünmesini unutmayın ), daha sonra şu şekilde çözülmüş olurdu:

http://myhost/pages/page1

çünkü /satır aralığı ana bilgisayarın kök dizinini belirtir.

Bir web uygulamasında, uygulamanıza ait tüm kaynaklar için göreli URL'ler kullanmanızı öneririm. Bu şekilde, sayfaların konumunu değiştirirseniz, her şey çalışmaya devam eder. Herhangi bir harici kaynak (tamamen uygulamanızın dışındaki sayfalar olabilir, ancak bir içerik dağıtım ağı üzerinden ilettiğiniz statik içerik) her zaman mutlak URL'leri kullanmaya yönlendirilmelidir: yoksa, bunları bulmanın bir yolu yoktur, çünkü bunlar farklı bir sunucuda bulunur.


9
Göreli URL'ler do not URL yolu ile başlamak gerekir. //example.com/…, ?foobarVe #foobaraynı zamanda göreli URL'ler ve (için ok iyi URL yolu ile başlamayın ?foobarbunu bir ile başlıyor diyebiliriz boş yolu).
Gumbo

@ Gumbo, -tip //example.com/…URL'ler göreli olarak adlandırılıyor mu? bu benim için yeni.
törzsmókus

3
@ törzsmókus RFC 2396 açısından : “Göreli URI referansları, bir şema adıyla başlamaması nedeniyle mutlak URI'den ayrılır.”
Gumbo

50

Dosyaları http://site.ru/shop klasöründe olan bir alt site oluşturduğumuzu varsayalım .

1. Mutlak URL

Link to home page
href="http://sites.ru/shop/"

Link to the product page
href="http://sites.ru/shop/t-shirts/t-shirt-life-is-good/"

2. Göreli URL

Link from home page to product page
href="t-shirts/t-shirt-life-is-good/"

Link from product page to home page
href="../../"

Göreli URL mutlak URL'den daha kısa görünse de, bir bağlantı sitenin herhangi bir sayfasında değişmeden kullanılabileceğinden mutlak URL'ler daha tercih edilir.

Ara vakalar

İki uç durumu ele aldık: "kesinlikle" mutlak ve "kesinlikle" göreli URL'ler. Fakat bu dünyada her şey görecelidir. Bu, URL'ler için de geçerlidir. Mutlak URL hakkında her söylediğinizde, neye göre daima belirtmeniz gerekir.

3. Protokole bağlı URL

Link to home page
href="//sites.ru/shop/"

Link to product page
href="//sites.ru/shop/t-shirts/t-shirt-life-is-good/"

Google bu URL'yi önerir. Ancak şimdi, http: // ve https: // 'nin farklı siteler olduğu düşünülmektedir.

4. Köke göre URL

Yani alan adının kök klasörüne göre.

Link to home page
href="/shop/"

Link to product page
href="/shop/t-shirts/t-shirt-life-is-good/"

Tüm sayfalar aynı alan adındaysa iyi bir seçimdir. Sitenizi başka bir alana taşıdığınızda, URL'lerde alan adının toplu olarak değiştirilmesine gerek yoktur.

5. Temel göreli URL (ana sayfaya göre)

<base> etiketi, göreli tüm bağlantılara ve bağlantılara otomatik olarak eklenen temel URL'yi belirtir. Temel etiket mutlak bağlantıları etkilemez. Temel URL olarak ana sayfayı belirtiriz: <base href = "http://sites.ru/shop/">.

Link to home page
href=""

Link to product page
href="t-shirts/t-shirt-life-is-good/"

Artık sitenizi yalnızca herhangi bir alana değil, herhangi bir alt klasöre taşıyabilirsiniz. URL'lerin göreli gibi görünse de, aslında mutlak olduklarını unutmayın. Özellikle çapalara dikkat edin. Geçerli sayfada gezinmek için href = "t-shirt / t-shirt-life-is-good / # comments" değil href = "# comments" yazmalıyız. İkincisi ana sayfaya atılacaktır.

Sonuç

Dahili bağlantılar için temel göreli URL'ler kullanıyorum (5). Harici bağlantılar ve bültenler için mutlak URL'ler kullanıyorum (1).


1
mükemmel cevap. çok kötü, insanların görmesi için sayfada çok düşük kalıyor. diğer cevaplar hakkındaki yorumların çoğunu yanıtlar.
oligofren

24

Açıkça tartışılması gereken gerçekten üç tür vardır. Uygulamada, URL'lerin daha düşük bir düzeyde ele alınmasına rağmen soyutlanmıştır ve geliştiricilerin tek bir URL yazmadan tüm yaşamlarını sürdürebileceklerini söyleyebilirim.

kesin

Mutlak URL'ler, kodunuzu protokole ve alana bağlar. Bu dinamik URL'lerle aşılabilir.

<a href=“https://dev.example.com/a.html?q=”>https://dev.example.com/a.html?q=</a>

Mutlak Artıları:

  1. Kontrol - Alt alan ve protokol kontrol edilebilir. Belirsiz bir alt alandan giren kişiler uygun alt alana yönlendirilir. Güvenli ve güvenli olmayan arasında uygun şekilde ileri geri atlayabilirsiniz.

  2. Yapılandırılabilir - Geliştiriciler işleri mutlak olmayı severler. Mutlak URL'ler kullanırken düzgün algoritmalar tasarlayabilirsiniz. URL'ler, tek bir yapılandırma dosyasında tek bir değişiklikle site genelinde güncellenebilecek şekilde yapılandırılabilir.

  3. Basiret - Sitenizi kazıyan kişileri arayabilir veya bazı ekstra harici bağlantılar alabilirsiniz.


Kök Bağıl

Kök Göreli URL'ler, kodunuzu temel URL'ye bağlar. Bu, dinamik URL'ler ve / veya temel etiketlerle aşılabilir .

<a href=“/index.php?q=”>.example.com/index.php?q=</a>

Kök Göreceli Artıları:

  1. Yapılandırılabilir - Temel etiket, anahtarlama alanlarını kolaylaştırmak ve şablonları uygulamak için seçtiğiniz herhangi bir köke göre bunları yapar.

bağıl

Göreli URL'ler kodunuzu dizin yapısına bağlar. Bunun üstesinden gelmenin bir yolu yok. Göreli URL'ler yalnızca dosya dizinlerinde geçiş dizinlerinde veya bir görev için kısayol olarak kullanışlıdır.

<a href=“index.php?q=”>index.php?q=</a>
<link src=“../.././../css/default.css” />

Göreceli Eksileri:

  1. KONFÜZYON - Bu kaç nokta? kaç klasör var? Dosya nerede? Neden çalışmıyor?

  2. BAKIM - Bir dosya yanlışlıkla kaynakların yüklenmesini bırakırsa, bağlantılar kullanıcıyı yanlış sayfalara gönderirse, form verileri yanlış sayfaya gönderilebilir. Bir dosyanın taşınması GEREKİRse, yüklemeyi bırakacak tüm kaynaklar ve hatalı olacak tüm bağlantıların güncellenmesi gerekir.

  3. ÖLÇEKLENMİYOR - Web sayfaları daha karmaşık hale geldiğinde ve görünümler birden fazla sayfada yeniden kullanılmaya başladığında, göreli bağlantılar dahil edildikleri dosyaya göre olacaktır. Her sayfada olacak bir HTML HTML gezinme snippet'iniz varsa, göreli birçok farklı yere göreceli olacaktır. İnsanların bir şablon oluşturmaya başladığında fark ettikleri ilk şey, URL'leri yönetmek için bir yola ihtiyaç duymalarıdır.

  4. BİLGİSAYAR - Tarayıcınız tarafından uygulanır (umarım RFC'ye göre). Bkz. RFC3986, bölüm 5 .

  5. Oops! - Hatalar veya yazım hataları örümcek tuzaklarına neden olabilir.


Güzergahların Evrimi

Geliştiriciler, burada tartışılmak üzere URL yazmayı bıraktılar. Tüm istekler bir web sitesinin dizin dosyası içindir ve bir sorgu dizesi, yani bir rota içerir. Rota, uygulamanıza oluşturulacak içeriği bildiren bir mini URL olarak düşünülebilir.

<a href="<?=Route::url('named_url', array('first' => 'my', 'last' => 'whacky'))?>">
    http://dev.example.com/index.php/my:whacky:url
</a>

Artıları:

  1. Mutlak URL'lerin tüm avantajları.
  2. URL'de herhangi bir karakterin kullanımı.
  3. Daha fazla kontrol (SEO için iyi).
  4. URL'leri algoritmik olarak oluşturma yeteneği. Bu, URL'lerin yapılandırılabilir olmasını sağlar. URL'yi değiştirmek, tek bir dosyadaki tek bir değişikliktir.
  5. 404 bulunamadı. Yedek yollar bir site haritası veya hata sayfası görüntüleyebilir.
  6. Uygulama dosyalarına dolaylı erişim için uygun güvenlik. Muhafız ifadeleri herkesin uygun kanallardan geldiğinden emin olabilir.
  7. MVC yaklaşımında pratiklik.

Benim almak

Çoğu insan projelerinde her üç şekli de bir şekilde kullanır. Anahtar, onları anlamak ve görev için en uygun olanı seçmek.


Tamamen mutlak URL'lerden kesinlikle daha iyi olan protokole bağlı URL'ler eksik. Şema (çoğunlukla HTTPS'ye) yükseltilirken mutlak URL'ler zahmetlidir, göreli URL'ler bunu düzeltir.
Tobu

@Tobu HTTPS üzerinden her şeye hizmet edin.
Hiçbiri

Yan not: Yukarıdaki kod örneklerinizin çoğunda tipografik alıntılar kullandığınız anlaşılıyor. Bunu düzeltmek isteyebilirsiniz.
domsson

Ve önce noktalı olan ne tür bir url? Örneğin "./index.html"
Narvalex

Basiret konusunda biraz ayrıntı verebilir misiniz? "Kök Göreli" URL'ler kullanıyorsanız, neden sitenizi kazıyan kişileri göremiyorsunuz?
Lovethenakedgun

6

Web sitenizde kullanım içinse, web sitesini başka bir alan adına taşımanız veya yalnızca yerel olarak hata ayıklamanız gerekirse, göreli URL'yi kullanmak daha iyi bir uygulamadır.

Stackoverflow'un ne yaptığına bir göz atın (firefox'ta ctrl + U):

<a href="/users/recent/90691"> // Link to an internal element

Bazı durumlarda mutlak URL'ler kullanırlar:

<link rel="stylesheet" href="http://sstatic.net/so/all.css?v=5934">

... ama bu sadece hızı artırmak için en iyi yöntem. Sizin durumunuzda, böyle bir şey yaptığınıza benzemiyor, bu yüzden endişelenmeyeceğim.


6

Burada çoğunluğa katılmam gerekecek.

Özellikle projeniz birkaç geliştiriciyle (ya da sadece kendiniz) küçükse, hızlı bir şekilde çalışmaya başlamak ve kutunun dışında düşünmek istemediğinizde göreli URL şemasının "iyi" olduğunu düşünüyorum.

Bununla birlikte, her zaman etki alanlarını ve protokolleri değiştirdiğiniz büyük, yağlı sistemler üzerinde çalışmaya başladığınızda, daha zarif bir yaklaşımın uygun olduğuna inanıyorum.

Mutlak ve göreli URL'leri özünde karşılaştırdığınızda, Mutlak kazanır. Neden? Çünkü hiç kırılmayacak. Hiç. Mutlak bir URL tam olarak söylediği şeydir. Yakalama, mutlak URL'lerinizi MAINTAIN yapmanız gerektiğidir.

Mutlak URL bağlantısına zayıf yaklaşım aslında tüm URL'yi kodlamak zordur. Harika bir fikir değil ve muhtemelen insanların neden onları korumak için tehlikeli / kötü / sinir bozucu olarak gördüklerinin suçlusu. Daha iyi bir yaklaşım, kendinize kullanımı kolay bir URL oluşturucu yazmaktır. Bunlar yazmak kolaydır ve inanılmaz derecede güçlü olabilir - protokolünüzü otomatik olarak algılar, yapılandırması kolaydır (kelimenin tam anlamıyla URL'yi tüm uygulama için bir kez ayarlayın), vb. Ve alan adınızı tek başına enjekte eder. Bununla ilgili güzel bir şey: Göreli URL'leri kullanarak kodlamaya devam edersiniz ve çalışma zamanında uygulama URL'lerinizi tam olarak mutlak olarak ekler. Muhteşem.

Tüm modern sitelerin pratik olarak bir çeşit dinamik arka uç kullandığını gören bu sitenin bunu yapmak en iyisidir. Mutlak URL'ler sizi nereye yönlendirdiklerinden emin olmaktan daha fazlasını yapar - ayrıca SEO performansını artırabilirler.

Mutlak URL'lerin bir şekilde sayfanın yükleme süresini değiştireceği argümanının bir efsane olduğunu ekleyebilirim. Alan adınız birkaç bayttan daha ağırsa ve 1980'lerde çevirmeli modem kullanıyorsanız, emin olun. Ama artık durum böyle değil. https://stackoverflow.com/ 25 bayt, sitenin gezinme alanı için kullandıkları "topbar-sprite.png" dosyası 9+ kb ağırlığındadır. Bu, ek URL verilerinin hareketli grafik dosyasına kıyasla yüklenen verilerin% 0,2'si olduğu ve bu dosyanın büyük bir performans isabeti olarak kabul edilmediği anlamına gelir.

Bu büyük, optimize edilmemiş, tam sayfa arka plan görüntüsünün yükleme sürelerinizi yavaşlatma olasılığı daha yüksektir.

Göreli URL'lerin neden kullanılmaması gerektiğiyle ilgili ilginç bir yayın burada: http://yoast.com/relative-urls-issues/

Örneğin, akrabalarda ortaya çıkabilecek bir sorun, bazen sunucu eşlemelerinin (büyük, dağınık projelerde olduğunu unutmayın) dosya adlarıyla hizalanmaması ve geliştiricinin, doğru. Bunu bugün üzerinde olduğum bir projede gördüm ve tüm sayfayı indirdi.

Ya da belki bir geliştirici bir işaretçiyi değiştirmeyi unuttu ve ani bir google tüm test ortamınızı dizine ekledi. Hata! Yinelenen içerik (SEO için kötü!).

Mutlaklar tehlikeli olabilir, ancak düzgün bir şekilde ve yapınızı bozmayacak şekilde kullanıldığında daha güvenilir oldukları kanıtlanmıştır. Wordpress url jeneratörünün süper harika olmasının birkaç nedenini veren yukarıdaki makaleye bakın.

:)


1
Mutlak URL dediğinizde, tam URL'yi mi yoksa /temel yola bağlanmak için mi kullanıyorsunuz ? yani /products/wallets/thing.htmlolarak karşıt thing.htmlaksinehttp://www.myshop.com/products/wallets/thing.html
Bradley tufandan

Bir "/" ile başlamak her zaman etki alanı köküne göreceğine inanıyorum. Dolayısıyla alan adınız "www.example.com" ise, "/image1.jpg" olarak kodlanan tüm başvurular "www.example.com/image1.jpg" olarak yorumlanır. Başında eğik çizgi olmayan öğeler istek köküne göre yorumlanır. "Mutlak URL" dediğimde tam URL'yi kastediyorum. MSDN bağlantılarını internet üzerinden göndermeyi
kesiyorum

Birçok insan henüz bunu fark etmemiş olsa da, bu şu anki en iyi uygulamadır. echo Route::url('route_name')HTTPS üzerinden yapma seçeneği ile site URL'sini ve rota bilgilerini kullanarak mutlak bir URL oluşturmak için kullanabileceğiniz Kohana gibi Rotaları seviyorum .
Yok

Çevirmeli modemlerin 80'lerde geri kalmadığını belirtmem gerektiğini hissediyorum. Şimdi çevirmeli veya süper overpriced çok sınırlı uydu internet dışında hiçbir seçenek var bol insan var ... ve fakir iseniz, ücretsiz çevirmeli daha iyi ne olabilir? Çevirmeli ağın artık mevcut olmadığına inanan geliştiricileri görmek beni gerçekten rahatsız ediyor. Çevirmeli bağlantıdan bankamın web sitesine giriş yapmak 5-10 dakika (!!!) sürebilir ... Paypal, Amazon ve Ebay çok daha iyi değil. Yumurta Mağarası (sanal bir evcil hayvan sitesi) ve Facebook sadece çevirmeli bağlantıda çalışmıyor. Bu, kırsal alanlarda yaşayan birçok insanı etkiler.
Kat Cox

Tamam, evet, çevirmeli bağlantıda bazı kişiler varken, kullanıcıların büyük (büyük) çoğunluğu çevirmeli bağlantıda değil . Ayrıca demografik özelliklerle de çok ilgisi var. Çok büyük ultra performanslı sonuçlar için çekim yapıyorsanız alan adınızı URL'nizden kırpmaya başlayın. Ancak bu yorumun ana noktası, performansın genellikle diğer alanlarda bulunduğunun altını çizmekti - tek bir görüntüyü optimize ederek url baytlarında kaybettiğiniz tüm aktarım süresini kazanabilirsiniz . ancak, kullanıcılarınızın% 20 veya daha fazlası çevirmeli bağlantıdaysa, sanırım bu önemli. 2015 yılında ve tüm pratik amaçlar için, durum böyle değil.
dudewad

4

Çoğu durumda, göreli URL'ler gitmenin bir yoludur, bunlar doğası gereği taşınabilirdir; bu, sitenizi kaldırmak ve anında çalışacak başka bir yere koymak isterseniz, muhtemelen hata ayıklama saatlerini azaltmak anlamına gelir.

Mutlak ve göreli URL'ler hakkında oldukça iyi bir makale var, bir göz atın .


4

URL şeması ve şeması belirli bir kısmına (ile başlar o URL http://, https://, ftp://vs.) mutlak bir URL.

Diğer herhangi bir URL göreli bir URL'dir ve göreli URL'nin, aksi belirtilmedikçe başvurunun kullanıldığı kaynağın URL'si olan çözümlendiği (ve dolayısıyla bağlı olduğu) bir temel URL'ye gereksinimi vardır.

Göreli URL'leri çözme örnekleri için RFC 2396 - Ek C'ye göz atın .


3

Diyelim ki bir siteniz var www.yourserver.com. Web belgelerinin kök dizininde bir resim alt dizininiz ve myimage.jpg dosyanız var.

Mutlak bir URL, dokümanın tam yerini tanımlar, örneğin:

http://www.yourserver.com/images/myimage.jpg

Göreli bir URL, örneğin, resminizin bulunduğu kök web dizininde bulunduğunuzda , geçerli dizine göre konumu tanımlar :

images/myimage.jpg

(bu kök dizine göre)

Mümkün olan yerlerde her zaman göreli URL'ler kullanmalısınız. Siteyi www.anotherserver.com adresine taşırsanız, www.yourserver.com adresini işaret eden tüm mutlak URL'leri güncellemeniz gerekir; göreli olanlar yalnızca olduğu gibi çalışmaya devam eder.


0

Göreli URI çözünürlüğünü destekleyen her sistem için hem göreli hem de mutlak URI'ler aynı amaca hizmet eder: referans verme. Ve birbirlerinin yerine kullanılabilirler. Böylece her durumda farklı karar verebilirsiniz . Teknik olarak, aynı referansı sağlarlar .

Kesin olmak gerekirse, her göreli URI ile zaten mutlak bir URI vardır. Ve bu, göreli URI'nin çözümlendiği temel URI'dir. Dolayısıyla, göreli bir URI aslında mutlak URI'lerin üstünde bir özelliktir.

Ve bu yüzden göreceli URI'lerle tek başına mutlak bir URI'de olduğu gibi daha fazlasını yapabilirsiniz - bu özellikle mutlak URI'lere kıyasla bakımı esnek olmayan statik web siteleri için özellikle önemlidir.

Göreli URI çözünürlüğünün bu olumlu etkileri, dinamik web uygulaması geliştirme için de kullanılabilir. Mutlak URI'lerin getirdiği esneklik, dinamik bir ortamda başa çıkmak için daha kolaydır, bu nedenle URI çözünürlüğü ve bunun nasıl doğru şekilde uygulanacağı ve yönetileceği konusunda emin olmayan bazı geliştiriciler için (her zaman kolay değildir) genellikle mutlak kullanmayı tercih ederler. Bir web sitesinin dinamik bir kısmındaki URI'ler, diğer esnek özellikler (ör. URI önekini içeren yapılandırma değişkeni) sunabildikleri için, esneklik etrafında çalışabilirler.

Peki mutlak URI'ları kullanmanın yararı nedir? Teknik olarak yok, ama diyebilirim ki: Göreli URI'ler daha karmaşıktır çünkü mutlak temel URI'ye karşı çözülmeleri gerekir. Çözünürlük yıllardan beri kesin olarak tanımlanmış olsa bile, URI çözümlemesinde hata olan bir istemcinin üzerinden geçebilirsiniz. Mutlak URI'ler herhangi bir çözüme ihtiyaç duymadığından, mutlak URI'lerin kullanımının göreceli URI çözünürlüğüyle hatalı istemci davranışına girme riski yoktur. Peki bu risk aslında ne kadar yüksek? Çok nadir. Yalnızca göreli URI çözünürlüğü ile ilgili bir sorunu olan bir İnternet tarayıcısı biliyorum. Ve bu genel olarak değil, sadece çok (belirsiz) bir olaydı.

HTTP istemcisinin (tarayıcı) yanında, köprü metni belgelerinin veya kodunun yazarı için de daha karmaşıktır. Burada mutlak URI'nin, testlerin daha kolay olmasının avantajı vardır, çünkü tarayıcınızın adres çubuğuna olduğu gibi girebilirsiniz. Ancak, yalnızca bir saatlik işiniz değilse, mutlak ve göreli URI işlemeyi gerçekten anlamanız daha sık yararlanır, böylece göreli bağlamanın avantajlarından yararlanabilirsiniz.


-4

Aynı sitenin bitlerini aynı sitenin diğer bitlerine işaret etmek için göreli URL'leri yürekten tavsiye ederim.

Aynı sitede olsa bile HTTPS'de yapılacak bir değişikliğin mutlak bir URL'ye ihtiyacı olacağını unutmayın.

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.