Bir URI ile bir URL arasındaki fark nedir?


44

Bu sayfaları okudum:

URL, URN ve URI ile ilgili temel bilgileri biliyorum; ama farklılıkları çok az . Anlayamadığım şey gibi bir sayfada: http://www.bernzilla.com/item.php?id=100hangi kısım URL, URN ve URI!
URI bütün bölümdür, ancak URL ve URN ??

Wikipedia'dan resim

Düzenleme:
from w3c.org:

Bir URL, bir kaynağı, sahip olabileceği diğer bazı özniteliklerden ziyade, birincil erişim mekanizmasının (ör., Ağının "konumu") temsili yoluyla temsil eden bir URI türüdür.

dan www.damnhandy.com :

Şimdi uygulamaları tanımlarken URL kullanmak yanlış kabul edilir.

Şimdi idbir nitelik mi? Peki ya uygulama bölümü? PHP bir uygulama mı?


3
Bu soru Stack Overflow'ta birkaç kez soruldu ve çok fazla dikkat ve iyi tepkiler aldı: Bir URI ile bir URL arasındaki fark nedir?
Hippietrail

Yanıtlar:


42

URI / URL Venn Şeması

URL - Tekdüzen Kaynak Bulucu

Bir kaynağın bulunduğu yerden nasıl alınacağı hakkında bilgi içerir. Örneğin:

  • http://example.com/mypage.html
  • ftp://example.com/download.zip
  • mailto:user@example.com
  • file:///home/user/file.txt
  • tel:1-888-555-5555
  • http://example.com/resource?foo=bar#fragment
  • /other/link.html (Göreli bir URL, yalnızca başka bir URL bağlamında kullanışlıdır)

URL'ler her zaman bir protokolle ( http) başlar ve genellikle ağ ana bilgisayarı adı ( example.com) ve genellikle bir belge yolu ( /foo/mypage.html) gibi bilgiler içerir. URL’lerin sorgu parametreleri ve parça tanımlayıcıları olabilir.

URN - Tekdüzen Kaynak Adı

Bir kaynağı benzersiz ve kalıcı bir adla tanımlar. Genellikle önekle başlar urn: Örneğin:

  • urn:isbn:0451450523 Bir kitabı ISBN numarasına göre tanımlamak için.
  • urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66 küresel olarak benzersiz bir tanımlayıcı
  • urn:publishing:book - Belgeyi bir kitap türü olarak tanımlayan bir XML ad alanı.

URN'ler fikirleri ve kavramları tanımlayabilir. Belgeleri tanımlamakla sınırlı değildirler. Bir URN bir dokümanı temsil ettiğinde, bir "çözümleyici" tarafından bir URL'ye çevrilebilir. Belge daha sonra URL'den indirilebilir.

URI - Tekdüzen Kaynak Tanımlayıcısı

URI'ler URL'leri, URN'leri ve bir kaynağı tanımlamanın diğer yollarını içerir.

Ne URL ne de URN olmayan bir URI örneği, gibi bir veri URI'si olabilirdata:,Hello%20World . URI verileri içerdiğinden bu bir URL veya URN değildir. Ne adlandırır ne de ağ üzerinden nasıl bulacağınızı söylemez.

Ayrıca belgenin kendisinden ziyade bir belge hakkında meta verilere işaret eden tek tip kaynak alıntıları (URC'ler) vardır. Bir URC bir örneği, bir web sayfasının kaynak kodunu görüntülemek için bir tanımlayıcı olacaktır: view-source:http://example.com/. URC, URL veya URN olmayan başka bir URI türüdür.

sık sorulan Sorular

Artık URL söylememem gerektiğini duydum, neden?

HTML için W3 spec href, bir çapa etiketinin yalnızca bir URL değil, URI içerebileceğini söylüyor . Gibi bir URN koymak mümkün olmalıdır <a href="urn:isbn:0451450523">. Tarayıcınız bu URN'yi bir URL'ye çözecek ve kitabı sizin için indirecektir.

Herhangi bir tarayıcı gerçekten belgeleri URN ile nasıl alacağını biliyor mu?

Bildiğim kadarıyla değil, modern web tarayıcısı veri URI şemasını uyguluyor.

URL ile URI arasındaki farkın, göreli veya mutlak olup olmadığıyla ilgisi var mı?

Hayır. Hem göreceli hem de mutlak URL’ler URL’lerdir (ve URI’ler).

URL ile URI arasındaki farkın, sorgu parametrelerine sahip olup olmadığıyla ilgisi var mı?

Hayır. Sorgu parametreleri olan ve olmayan her iki URL de URL'lerdir (ve URI'lerdir).

URL ile URI arasındaki farkın, bir parça tanımlayıcısının olup olmadığıyla bir ilgisi var mı?

Hayır. Parça tanımlayıcıları olan ve olmayan her iki URL de URL’lerdir (ve URI’ler).

Ancak W3C şimdi URL'lerin ve URI'lerin aynı şey olduğunu söylemiyor mu?

Evet. W3C bu konuda bir ton karışıklık olduğunu fark etti. URL ve URI terimlerini birbirlerinin yerine kullanabilmenin artık (tamam) anlamına geldiğini belirten bir URI açıklama belgesi yayınladılar . Artık URI'leri URL, URN ve URC gibi farklı türlere ayırmak artık kullanışlı değildir.

Bir URI hem URL hem de URN olabilir mi?

URN tanımı şimdi yukarıda belirttiğimden daha gevşek. URI'lere ilişkin en son RFC, herhangi bir URI'nin urn:"bir adın özelliklerine" sahip olduğu sürece (artık başlayıp başlamadığına bakılmaksızın) artık bir URN olabileceğini söylüyor . Yani: Kaynağın varlığı sona erdiğinde ya da ulaşılamadığında bile, dünya çapında benzersiz ve ısrarcıdır. Örnek: HTML gibi doktiplerde kullanılan URI'ler http://www.w3.org/TR/html4/strict.dtd. Bu URI, w3.org web sitesindeki sayfa silinmiş olsa bile HTML4 geçiş doktrini olarak adlandırmaya devam edecektir.


W3C açıklamasında ve URL / URI ayrımında beni şaşırtan şey, aslında bir çok web sunucusu belgesinin URL'yi tüm istek dizesi olarak ve URI'yı "protokolü izleyen bölüm" olarak tanımlamasıdır. Bu parçaya $ uri değişken ismiyle bile başvuruyor. Örneğin: nginx.com/blog/creating-nginx-rewrite-rules Bu W3C tanımlarına göre kesinlikle "doğru" değil mi? Ama bence en yararlı.
Mike

1
URI'lar yaygın olarak yanlış anlaşıldı. Birçok kişi URI’nın URL’nin göreli URL’ye benzer bir bölümü olduğunu veya protokolü takip ettiğini düşünüyor. Bu asla doğru değildi, ancak bu fikirler sunucu dokümantasyonuna ya da programlama API'lerine oldukça sık bir şekilde giriş yaptı.
Stephen Ostermiller

10

Bence bu makaleler oldukça iyi açıklıyor. Sorunuzu cevaplamak için - bunların hepsi bir URL:

http://www.bernzilla.com/item.php?id=100

Her bit - http: www.bernzilla.comve bunun gibi kendi adı vardır:

  • http: şema
  • www alt etki alanıdır
  • bernzilla.com etki alanıdır
  • com en üst düzey etki alanı veya TLD'dir
  • (orada bir klasör veya yol olabilir, örneğin /dir/item.php ama yok)
  • item.php, php uzantılı bir sayfa veya dosya adıdır.
  • id = 100, sorgu dizesidir

Neden bu soruyu sorabildiğini wikipedia'dan görebiliyorum. Bu şema, iki tür URI olduğunu söylüyor - URL'ler ve URN'ler ve ortadaki bulanık bit, bir şeyin her ikisinin de olabileceği zamandır.


Cevap için teşekkürler. Sorumu değiştirdim. tekrar bakar mısın?
geri alındı

Uygulamaları tanımlamakla ilgili bu alıntıyı anlamıyorum ve birinin bunu işaret ettiği bir yorum göremiyorum. Ayrı parçaları tanımlamak için cevabımı güncelleyeceğim.
paulmorriss

@paul , ilk satırda URI demek istemiyor musunuz? id=100bir yer değil , bir gösterge.
DisgruntledGoat

URL'yi kastettiğimi düşünüyorum. Bazı sitelerdeki kimliği değiştirirseniz normal-konuşmada farklı "sayfalar" elde edersiniz. Kaynak tanımını wikipedia'da okumak bir sayfanın kaynak örneği olduğunu düşünüyorum.
paulmorriss

7

Bahsettiğiniz URL'nin hem URL hem de URN bölümünden oluşması söz konusu değildir.

http://www.bernzilla.com/item.php?id=100 hem bir URL hem de bir URI'dir.

Temel olarak URI'ler, URL'lerin ve URN'lerin bir üst kümesidir. URL'ler ve URN'ler arasında da bir miktar çakışma var.

URI, bir kaynağı konum veya ad veya her ikisi ile tanımlar.

Dolayısıyla, herhangi bir URL bir URI'dir, herhangi bir URN bir URI'dir, ancak her URI bir URL değildir.

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.