Orang-orang berbicara tentang URLs URIs, dan GUCIs seolah-olah mereka'kembali hal-hal yang berbeda, tetapi mereka terlihat sama dengan mata telanjang.
Apa yang dapat dibedakan perbedaan di antara mereka?
URIs mengidentifikasi dan URLs cari; namun, locator juga pengidentifikasi, jadi setiap URL juga URI, tetapi ada Uri yang tidak Url.
Ini adalah nama saya, yang merupakan identifier. Hal ini seperti URI, tetapi tidak dapat URL, itu memberitahu anda apa-apa tentang lokasi saya atau bagaimana untuk menghubungi saya. Dalam hal ini juga terjadi untuk mengidentifikasi setidaknya 5 orang lain di amerika SERIKAT saja.
Ini adalah locator, yang merupakan identifier untuk itu lokasi fisik. Hal ini seperti URL dan URI (karena semua Url Uri), dan juga mengidentifikasi me secara tidak langsung sebagai "penduduk..". Dalam hal ini secara unik mengidentifikasi saya, tapi itu akan berubah jika saya mendapatkan teman sekamar.
Saya mengatakan "seperti" karena ini contoh yang tidak mengikuti sintaks yang diperlukan.
Dari Wikipedia:
Dalam komputasi, sebuah Uniform Resource Locator (URL) adalah subset dari Uniform Resource Identifier (URI) yang menentukan mana yang diidentifikasi sumber daya yang tersedia dan mekanisme untuk mengambil itu. Dalam penggunaan populer dan dalam banyak dokumen teknis dan verbal diskusi itu sering salah digunakan sebagai sinonim untuk URI, ... [penekanan dari saya]
Karena ini umum kebingungan, banyak produk dan dokumentasi salah menggunakan satu istilah, bukan yang lain, menetapkan mereka sendiri perbedaan, atau menggunakan mereka secara sinonim.
Nama saya, Roger Pate, bisa menjadi seperti MM (Uniform Resource Name), kecuali orang-orang yang jauh lebih regulated dan dimaksudkan untuk menjadi unik di kedua ruang dan waktu.
Karena saat ini saya berbagi nama ini dengan orang lain, it's tidak secara global unik dan tidak akan sesuai seperti GUCI. Namun, bahkan jika tidak ada keluarga lain yang digunakan nama ini, aku'm dinamai kakek dari pihak ayah saya, sehingga masih tidak't menjadi unik seluruh waktu. Dan bahkan jika yang tidak't kasus ini, kemungkinan penamaan keturunan saya setelah saya membuat ini cocok sebagai sebuah GUCI.
Guci yang berbeda dari Url yang kaku ini keunikan kendala, meskipun mereka berdua berbagi sintaks dari Uri.
Dari RFC 3986:
URI dapat lebih diklasifikasikan sebagai locator, nama, atau keduanya. Yang istilah "Uniform Resource Locator" (URL) mengacu pada bagian dari Uri bahwa, selain untuk mengidentifikasi sumber daya, menyediakan sarana menemukan sumber daya dengan menggambarkan utamanya akses mekanisme (misalnya, jaringan "lokasi"). Istilah "Uniform Resource Nama" (GUCI) telah digunakan untuk merujuk pada kedua Uri di bawah "guci" skema [RFC2141], yang diperlukan untuk tetap secara global unik dan terus-menerus bahkan ketika sumber daya tidak lagi ada atau menjadi tidak tersedia, dan lain URI dengan sifat dari sebuah nama.
Jadi semua Url Uri (sebenarnya tidak cukup - lihat di bawah), dan semua Guci Uri - tapi Guci dan Url yang berbeda, sehingga anda dapat't mengatakan bahwa semua Uri adalah Url.
EDIT: saya sebelumnya berpikir bahwa semua Url yang valid Uri, tetapi sesuai komentar:
Tidak "semua Url Uri". Hal ini tergantung pada interpretasi dari RFC. Misalnya di Jawa URI parser tidak suka
[
atau]
dan's karena spec kata "tidak" dan "tidak".
Sehingga memasuki perairan lebih lanjut, sayangnya.
Jika anda belum't sudah membaca Roger Pate's jawaban, aku'd menyarankan melakukannya juga.
Uri adalah standar untuk mengidentifikasi dokumen menggunakan string pendek dari angka, huruf, dan simbol. Mereka didefinisikan oleh RFC 3986 - Uniform Resource Identifier (URI): Generic Sintaks. Url, Guci, dan URCs semua jenis URI.
Berisi informasi tentang bagaimana untuk mengambil sumber daya dari lokasi. Misalnya:
http://example.com/mypage.html
ftp://example.com/download.zip
mailto:[email protected]
file:///home/user/file.txt
tel:1-888-555-5555
http://example.com/resource?foo=bar#fragment
/other/link.html
(URL relatif, hanya berguna dalam konteks URL lain)Url selalu mulai dengan protokol (http
) dan biasanya berisi informasi seperti jaringan dan nama host (example.com
) dan sering path dokumen (/foo/mypage.html
). Url dapat memiliki parameter kueri dan fragmen pengenal.
Mengidentifikasi sumber daya yang unik dan gigih nama, tapi doesn't selalu memberitahu anda bagaimana untuk menemukan itu di internet. Hal ini biasanya dimulai dengan awalan urn:
misalnya:
urn:isbn:0451450523
untuk mengidentifikasi sebuah buku dengan nomor ISBN.urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66
sebuah pengenal unik secara globalurn:penerbitan:buku
- XML namespace yang mengidentifikasi dokumen sebagai jenis buku.Guci dapat mengidentifikasi ide-ide dan konsep-konsep. Mereka tidak dibatasi untuk mengidentifikasi dokumen. Ketika GUCI tidak mewakili dokumen, hal ini dapat diterjemahkan ke URL dengan "penyelesai". Dokumen dapat didownload dari URL.
Poin untuk meta data tentang dokumen daripada ke dokumen itu sendiri. Contoh URC adalah salah satu yang poin ke kode sumber HTML dari halaman seperti: view-source:http://contoh.com/
Daripada mencari di internet, atau penamaan itu, data dapat ditempatkan langsung ke URI. Sebuah contoh akan menjadi data:,Hello%20World
.
W3 spec untuk HTML mengatakan bahwa href
dari anchor tag dapat mengandung URI, bukan hanya URL. Anda harus dapat dimasukkan ke dalam GUCI seperti <a href="guci:isbn:0451450523">
. Browser anda kemudian akan memecahkan GUCI itu ke URL anda dan men-download buku ini untuk anda.
Aku tidak tahu, tapi browser web yang modern menerapkan data skema URI.
No. Keduanya relatif dan absolut Url url (Url dan Uri.)
No. Kedua Url tersebut dengan dan tanpa query parameter url (Url dan Uri.)
No. Kedua Url tersebut dengan dan tanpa fragmen pengenal adalah url (Url dan Uri.)
No. Url didefinisikan untuk menjadi ketat subset dari Uri. Jika parser memungkinkan karakter dalam URL, namun tidak di URI, ada bug di parser. Spesifikasi pergi ke detail tentang karakter yang diperbolehkan di mana bagian-bagian dari Url dan Uri. Beberapa karakter mungkin akan diizinkan hanya di beberapa bagian URL, tapi karakter saja tidak perbedaan antara Url dan Uri.
Ya. W3C menyadari bahwa ada banyak kebingungan tentang hal ini. Mereka mengeluarkan URI klarifikasi dokumen yang mengatakan bahwa itu adalah OK untuk menggunakan istilah URL dan URI secara bergantian (berarti URI). Hal ini tidak lagi berguna untuk secara ketat segmen Uri ke dalam jenis yang berbeda seperti URL, GUCI, dan URC.
Definisi GUCI sekarang lebih longgar dari apa yang saya nyatakan di atas. The terbaru RFC pada Uri mengatakan bahwa setiap URI sekarang dapat GUCI (terlepas dari apakah itu dimulai dengan urn:
) asalkan memiliki "sifat dari sebuah nama." Itu adalah: Itu adalah unik secara global dan terus-menerus bahkan ketika sumber daya tidak lagi ada atau menjadi tidak tersedia. Contoh: Uri Yang digunakan dalam HTML doctypes seperti http://www.w3.org/TR/html4/strict.dtd
. Bahwa URI akan terus nama HTML4 transisi doctype bahkan jika halaman di w3.org website yang dihapus.
Dalam ringkasan: URI mengidentifikasi, URL mengidentifikasi dan menempatkan.
Mempertimbangkan spesifik edisi Shakespeare's play Romeo dan Juliet, dari mana anda memiliki salinan digital pada jaringan rumah anda.
Anda bisa mengidentifikasi teks sebagai urn:isbn:0-486-27557-4
.
Itu akan menjadi sebuah URI, tetapi lebih khusus GUCI* karena itu *namateks*.
Anda juga bisa mengidentifikasi teks sebagai file://hostname/sharename/RomeoAndJuliet.pdf
.
Itu juga akan menjadi URI, tetapi lebih khusus URL karena menempatkan teks.
*Uniform Resource Nama
(Catatan bahwa contoh saya ini diadaptasi dari Wikipedia)
Ini adalah beberapa yang sangat baik ditulis tapi lama-tele jawaban. Berikut ini adalah perbedaan sejauh CodeIgniter yang bersangkutan:
URL - http://example.com/some/page.html
URI - /some/page.html
Sederhananya, URL adalah cara untuk mengidentifikasi setiap sumber daya di mana saja dan dapat memiliki berbagai protokol seperti FTP, HTTP, SCP, dll.
URI adalah sumber daya pada domain saat ini, sehingga perlu sedikit informasi yang dapat ditemukan.
Dalam setiap contoh yang CodeIgniter menggunakan kata URL atau URI ini adalah perbedaan yang mereka bicarakan, meskipun di grand-skema web, hal ini tidak 100% benar.
Pertama-tama mendapatkan pikiran anda dari kebingungan dan mengambil itu sederhana dan anda akan mengerti.
URI => Uniform Resource Identifier Mengidentifikasi alamat lengkap dari sumber daya i-e lokasi, nama, atau keduanya.
URL => Uniform Resource Locator Mengidentifikasi lokasi sumber daya.
GUCI => Uniform Resource Nama Mengidentifikasi nama sumber daya
Contoh
Kami memiliki alamat https://www.google.com/folder/page.html mana,
URI(Uniform Resource Identifier) => https://www.google.com/folder/page.html
URL(Uniform Resource Locator) => https://www.google.com/
GUCI(Uniform Resource Name) => /folder/page.html
URI => (URL + GUCI) atau hanya URL atau GUCI hanya
Sebuah tambahan kecil untuk jawaban sudah diposting, di sini's Venn's diagram untuk meringkas teori (dari Prateek Joshi's indah penjelasan):
Dan contoh (juga dari Prateek's web):
Ini adalah salah satu yang paling membingungkan dan mungkin topik yang tidak relevan saya've ditemui sebagai web profesional.
Seperti yang saya mengerti, URI adalah deskripsi dari sesuatu, mengikuti format yang diterima, yang dapat menentukan baik atau baik dengan nama yang unik (identifikasi) dari sesuatu dan lokasi.
Ada dua dasar subset - Url, yang menentukan lokasi (terutama untuk browser mencoba untuk mencari halaman web) dan Guci, yang menentukan nama yang unik dari sesuatu.
Saya cenderung untuk berpikir dari Guci sebagai mirip dengan Guid. Mereka hanya metodologi standar untuk memberikan nama-nama yang unik untuk hal-hal. Seperti dalam namespace deklaratif yang menggunakan perusahaan's nama - it's tidak suka ada sumber daya duduk di sebuah server di suatu tempat sesuai dengan baris teks - itu hanya secara unik mengidentifikasi sesuatu.
Saya juga cenderung untuk benar-benar menghindari istilah URI dan membahas hal-hal yang hanya dalam hal URL atau GUCI yang sesuai, karena hal ini menyebabkan banyak kebingungan. Pertanyaan kita benar-benar harus mencoba menjawab untuk orang-orang isn't begitu banyak semantik, tapi bagaimana untuk mengidentifikasi ketika menghadapi hal apakah atau tidak ada perbedaan praktis dalam mereka yang akan mengubah pendekatan pemrograman situasi. Misalnya, jika seseorang mengoreksi saya dalam percakapan dan berkata, "oh, itu's tidak URL itu's URI" saya tahu mereka're penuh itu. Jika seseorang berkata, "kami're menggunakan sebuah GUCI untuk menentukan sumber daya" aku'm lebih mungkin untuk memahami kita hanya penamaan itu unik, tidak menemukan itu pada server.
Jika saya'm cara dari dasar - tolong beritahu saya!
Identifier = Nama + Lokasi
Setiap URL(Uniform Resource Locator) adalah URI(Uniform Resource Identifier), abstrak berbicara, tapi setiap URI bukan URL. Ada lagi subkategori dari URI adalah GUCI (Uniform Resource Name), yang merupakan nama sumber, tetapi tidak menentukan bagaimana untuk menemukan mereka, seperti mailto, berita, ISBN adalah Uri. Sumber
URN:
urn:[namespace pengenal]:[namespace string tertentu]
arn:partisi:layanan:wilayah:account-id:sumber daya
URL:
[skema]://[Domain][Port]/[path]?[queryString]#[fragmentId]
Analogi: Untuk mencapai orang: Mengemudi(protokol lain-lain SMS, email, telepon), Alamat(nama lain telepon-nomor, emailid) dan nama orang(nama objek dengan path relatif).
URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
URL's adalah subset dari URI's (yang juga berisi Guci).
Pada dasarnya, URI umum identifier, di mana URL menentukan lokasi dan GUCI menentukan sebuah nama.
Contoh lain yang saya ingin gunakan ketika berpikir tentang Uri adalah xmlns atribut dari dokumen XML:
<rootElement xmlns:myPrefix="com.mycompany.mynode">
<myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>
Dalam hal ini com.mycompany.mynode akan URI yang secara unik mengidentifikasi "myPrefix" namespace untuk semua elemen yang menggunakannya dalam dokumen XML. Ini BUKAN URL karena hanya digunakan untuk mengidentifikasi, bukan untuk mencari sesuatu yang per se.
Karena kesulitan untuk membedakan dengan jelas antara URI dan URL, sejauh yang saya ingat W3C tidak membuat perbedaan lagi antara URI dan URL (http://www.w3.org/Addressing/).
Mereka're hal yang sama. URI adalah generalisasi dari URL. Awalnya, Uri yang direncanakan akan dibagi menjadi Url (alamat) dan Guci (nama-nama) tapi kemudian ada sedikit perbedaan antara URL dan URI Uri http digunakan sebagai namespaces meskipun mereka didn't benar-benar menemukan sumber daya.
URI, URL, GUCI
Seperti gambar di atas menunjukkan, ada tiga komponen yang berbeda yang bermain di sini. Biasanya yang terbaik untuk pergi ke sumber ketika membahas hal-hal seperti ini, jadi berikut ini adalah cuplikan dari Tim Berners-Lee, et. al. di RFC 3986: Uniform Resource Identifier (URI): Generic Sintaks:
Uniform Resource Identifier (URI) adalah sebuah compact urutan karakter yang mengidentifikasi abstrak atau sumber daya fisik.
URI dapat lebih diklasifikasikan sebagai locator, nama, atau keduanya. Yang istilah "Uniform Resource Locator" (URL) mengacu pada bagian dari Uri bahwa, selain untuk mengidentifikasi sumber daya, menyediakan sarana lokasi sumber dengan menggambarkan akses utama mekanisme (misalnya, jaringan, "lokasi").
URI adalah jenis dari kelas super URL's dan GUCI's. Wikipedia memiliki artikel yang baik tentang mereka dengan link ke kanan set Rfc.
Wikipedia akan memberikan semua informasi yang anda butuhkan di sini. Mengutip dari http://en.wikipedia.org/wiki/URI:
URL adalah URI itu, selain untuk mengidentifikasi sumber daya, menyediakan sarana bertindak atas atau memperoleh representasi dari resource dengan menggambarkan utamanya akses mekanisme atau jaringan "lokasi".
URL
URL adalah spesialisasi dari URI yang mendefinisikan lokasi jaringan sumber daya tertentu. Tidak seperti GUCI, URL mendefinisikan bagaimana sumber daya dapat diperoleh. Kami menggunakan Url setiap hari dalam bentuk http://example.com
dll. Tapi URL doesn't harus menjadi sebuah URL HTTP, dapat ftp://example.com
dll., juga.
URI
URI mengidentifikasi sumber daya baik oleh lokasi, atau nama, atau keduanya. Lebih sering daripada tidak, kebanyakan dari kita menggunakan Uri yang mendefinisikan lokasi ke sumber daya. Fakta bahwa URI dapat mengidentifikasi sumber daya dengan baik nama dan lokasi telah menyebabkan banyak kebingungan dalam pendapat saya. URI memiliki dua spesialisasi yang dikenal sebagai URL dan GUCI.
Perbedaan antara URL dan URI
URI adalah identifier untuk beberapa sumber daya, tapi URL memberi anda informasi spesifik untuk memperoleh sumber daya yang. URI adalah URL dan sebagai salah satu commenter mencontohkan, sekarang dianggap salah untuk menggunakan URL ketika menggambarkan aplikasi. Umumnya, jika URL yang menjelaskan lokasi dan nama sumber daya, istilah yang digunakan adalah URI. Karena ini adalah kasus pada umumnya kebanyakan dari kita temui sehari-hari, URI adalah istilah yang benar.
Sebagai per RFC 3986, Uri terdiri dari bagian berikut:
scheme://authority/path?query
URI menjelaskan protokol untuk mengakses sumber daya (jalan) atau aplikasi (query) di server (kewenangan).
Semua Url Uri, dan semua Guci Uri, tetapi semua Uri tidak Url.
Silakan lihat untuk rincian lebih lanjut:
URI mengidentifikasi sumber daya baik oleh lokasi, atau nama, atau keduanya. Lebih sering daripada tidak, kebanyakan dari kita menggunakan Uri yang mendefinisikan lokasi ke sumber daya. Fakta bahwa URI dapat mengidentifikasi sumber daya dengan baik nama dan lokasi telah menyebabkan banyak kebingungan dalam pendapat saya. URI memiliki dua spesialisasi yang dikenal sebagai URL dan GUCI.
URL adalah spesialisasi dari URI yang mendefinisikan lokasi jaringan sumber daya tertentu. Tidak seperti GUCI, URL mendefinisikan bagaimana sumber daya dapat diperoleh. Kami menggunakan Url setiap hari dalam bentuk https://stackoverflow.com, dll. Tapi URL tidak harus menjadi sebuah URL HTTP, dapat ftp://example.com
, dll.
Meskipun istilah URI dan URL yang didefinisikan secara ketat, banyak menggunakan istilah-istilah untuk hal-hal lain dari mereka yang ditetapkan untuk.
Mari kita ambil Apache misalnya. Jika http://example.com/foo diminta dari Apache server, anda akan memiliki variabel lingkungan berikut ditetapkan:
REDIRECT_URL
: /foo
REQUEST_URI
: /foo
Dengan mod_rewrite diaktifkan, anda juga akan memiliki variabel-variabel tersebut:
REDIRECT_SCRIPT_URL
: /foo
REDIRECT_SCRIPT_URI
: http://example.com/foo
SCRIPT_URL
: /foo
SCRIPT_URI
: http://example.com/foo
Ini mungkin menjadi alasan bagi beberapa kebingungan.