Oamenii vorbesc despre URLs, URIs, si URNAs ca daca ei're lucruri diferite, dar ele arata la fel cu ochiul liber.
Ce distinge diferențele dintre ele?
URIs identifice și URLs localiza; cu toate acestea, locatoare sunt, de asemenea, identificatori, astfel încât fiecare URL-ul este, de asemenea, un URI, dar sunt uri-Uri care nu sunt Url-uri.
Acesta este numele meu, care este un identificator. Este ca un URI, dar nu poate fi un URL, cum se spune nimic despre locația mea sau cum să mă contactați. În acest caz, se întâmplă, de asemenea, să identifice cel puțin alte 5 persoane numai în SUA.
Acesta este un locator, care este un identificator pentru că locația fizică. Este ca și cum amândoi o adresă URL și URI (din toate Url-Uri), și, de asemenea, identifică m indirect ca "rezident al..". În acest caz, se identifică în mod unic mine, dar asta s-ar schimba dacă am un coleg de cameră.
Spun "ca" pentru că aceste exemple nu respectă obligația de sintaxă.
De Wikipedia:
În calcul, un Uniform Resource Locator (URL) este un subset de la Uniform Resource Identifier (URI), care specifică în cazul în care o anumită resursă este disponibilă și mecanismul pentru recuperarea acestuia. În utilizare populare și în mai multe documente tehnice și verbale discuții este adesea folosit incorect ca un sinonim pentru URI, ... [sublinierea mea]
Din cauza acestei frecvente confuzii, multe produse și documentația incorect folosi un termen în loc de altă parte, atribuie propriile distincție, sau să le utilizați ca sinonime.
Numele meu, Roger Pate, ar putea fi ca un URN (Uniform Resource Name), cu excepția celor care sunt mai mult regulated și care este destinat să fie unic în atat de spațiu și de timp.
Pentru că, în prezent, să împărtășească acest nume cu alte persoane, l's nu global unic și nu ar fi adecvat ca o URNĂ. Cu toate acestea, chiar dacă nici o altă familie, a folosit acest nume, am'm numit după bunicul meu patern, așa că încă nu't fi unic, de-a lungul timpului. Și chiar dacă că n't caz, posibilitatea de a numi urmașii mei de după mine face acest lucru nepotrivit ca o URNĂ.
Urne sunt diferite de Url-uri în acest rigide unicitatea constrângere, chiar dacă ambele au sintaxă de uri-Uri.
De RFC 3986:
UN URI pot fi clasificate în continuare ca un locator, un nume, sau ambele. La termenul "Uniform Resource Locator" (URL-ul) se referă la subsetul de uri-Uri că, în plus față de identificarea unei resurse, să ofere un mijloc de localizarea resursei prin descrierea său principal mecanism de acces (de exemplu, rețeaua sa "localizare"). Termenul "Uniform Resource Name" (URNĂ) a fost folosit istoric pentru a se referi la ambele Uri sub "urna" sistem [RFC2141], care sunt necesare pentru a rămâne unic la nivel mondial și persistente chiar și atunci când resursa încetează să mai existe sau devine disponibile, precum și orice altă URI cu proprietăți de un nume.
Deci, toate Url-urile sunt uri-Uri (de fapt, nu chiar - vezi mai jos), și toate Urne sunt Uri - dar Urne și Url-uri sunt diferite, astfel încât să puteți't spune că toate Uri-urile sunt Url-uri.
EDIT: am crezut anterior că toate Url-urile sunt valabile Uri, dar ca pe comentarii:
Nu "toate Url-urile sunt URIs". Depinde de interpretare a RFC. De exemplu, în Java URI parser nu-i place
[
sau]
și că's, deoarece spec spune "nu" si nu "nu".
Așa că tulbură apele în continuare, din păcate.
Dacă te-ai't citit deja Roger Pate's a răspunde, am'd sfătuiesc să faci la fel.
Uri-urile sunt un standard pentru identificarea documentelor folosind un scurt șir de numere, litere și simboluri. Acestea sunt definite prin RFC 3986 - Uniform Resource Identifier (URI): Generic Sintaxa. Url-uri, Urne, și URCs sunt toate tipuri de URI.
Conține informații despre cum să-i aducă un resource de la locație. De exemplu:
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
(Un URL relativ, util doar în contextul unui alt URL)Url-uri începe întotdeauna cu un protocol (http
) și, de obicei, conțin informații, cum ar fi rețeaua numele de gazdă (example.com
) și de multe ori o cale document (/foo/mypage.html
). Url-urile pot avea parametri de interogare și fragment de identificare.
Identifică o resursă de un unic și persistent numele, dar nu't neapărat să-ți spun cum să-l localizeze pe internet. De obicei, începe cu prefixul urn:
De exemplu:
Urne pot identifica idei și concepte. Ele nu sunt limitate la identificarea documentelor. Atunci când o URNĂ reprezintă un document, care poate fi tradus într-un URL-ul de o "resolver". Documentul poate fi apoi descărcat de la adresa URL.
Puncte de meta-date despre un document mai degrabă decât la documentul în sine. Un exemplu de o URC este unul care indică codul sursă HTML al unei pagini, cum ar fi: view-source:http://exemplu.com/
Mai degrabă decât de localizare pe internet, sau denumirea, datele pot fi introduse direct într-un URI. Un exemplu ar fi date:,Alo%20World
.
W3 spec pentru HTML spune că href
de o etichetă ancoră poate conține un URI, nu doar un URL. Tu ar trebui să fie capabil de a pune într-o URNĂ, cum ar fi <a href="urna:isbn:0451450523">
. Browser-ul dvs. ar rezolva URNA de la un URL-ul și de a descărca cartea pentru tine.
Nu știu, dar modern, web browser-ul nu pune în aplicare URI de date sistem.
Nr. Ambele relativă și absolută Url-uri sunt Url-uri (și de uri-Uri.)
Nr. Ambele Url-uri cu și fără parametri de interogare sunt Url-uri (și de uri-Uri.)
Nr. Ambele Url-uri cu și fără fragment identificatori sunt Url-uri (și de uri-Uri.)
Nr. Url-urile sunt definite pentru a fi o strictă subset de uri-Uri. Dacă un parser permite un personaj dintr-un URL, dar nu într-un URI, există un bug în parser. Specificatiile intra în detaliu despre ce caractere sunt permise în care părți de Url-uri și de uri-Uri. Unele caractere pot fi permise numai în unele părți ale URL-ului, dar personajele nu sunt un diferența dintre Url-uri și de uri-Uri.
Da. W3C a dat seama că există o mulțime de confuzie cu privire la acest lucru. Ei au emis o URI documente de clarificare, care spune că acum este OK pentru a folosi termenii de URL-URI și alternativ (adică URI). Este mai util să se strict segment Uri în diferite tipuri, cum ar fi URL-ul, URNĂ, și URC.
Definiția URNA este acum mai flexibile decât ceea ce am afirmat mai sus. De cele mai recente RFC pe URIs spune că orice URI pot fi acum o URNĂ (indiferent dacă acesta începe cu urna lui:) atâta timp cât nu are "proprietățile de un nume." Care este: este global unic și persistent chiar și atunci când resursa încetează să mai existe sau devine indisponibil. Un exemplu: Uri utilizate în HTML doctypes cum ar fi
http://www.w3.org/TR/html4/strict.dtd`. Asta-URI va continua să numească HTML4 transitional doctype chiar dacă pagina pe w3.org site-ul a fost șters.
În rezumat: un URI identifică, un URL identifică și localizează.
Ia în considerare o anumită ediție a Shakespeare's play Romeo și Julieta, din care aveți o copie digitală de pe rețeaua de domiciliu.
Ai putea identifica textul ca urn:isbn:0-486-27557-4
.
Asta ar fi un URI, dar mai ales un URNA* pentru că nume text.
Ai putea identifica, de asemenea, textul ca file://hostname/numepartajare/RomeoAndJuliet.pdf
.
Care ar fi, de asemenea, un URI, dar mai precis o URL pentru că localizează text.
*Uniform Resource Name
(Rețineți că exemplul meu este adaptat din Wikipedia)
Acestea sunt unele foarte bine scris, dar tărăgănat răspunsuri. Aici este diferența în măsura în CodeIgniter este preocupat:
URL - http://example.com/some/page.html
URI - /some/page.html
Pune pur și simplu, URL-ul este plin mod de a identifica orice resursă oriunde și pot avea diferite protocoale cum ar fi FTP, HTTP, SCP, etc.
URI este o resursă pe actualul domeniu, așa că are nevoie de mai puține informații pentru a fi găsit.
În toate cazurile în care CodeIgniter folosește cuvântul URL-URI sau aceasta este diferența vorbesc despre totuși, în grand-sistem de web, nu este 100% corecte.
Mai întâi de toate, ia-ți gândul de confuzie și să-l simplu și veți înțelege.
URI => Uniform Resource Identifier Identifică o adresă completă de resurse i-e locul, numele sau ambele.
URL => Uniform Resource Locator Identifică locația de resurse.
URNA => Nume Uniform Resource Identifică numele resursei
Exemplu
Avem adresa https://www.google.com/folder/page.html în cazul în care,
URI(Uniform Resource Identifier) => https://www.google.com/folder/page.html
URL(Uniform Resource Locator) => https://www.google.com/
URN(Uniform Resource Name) => /folder/page.html
URI => (URL + URN) sau URL-ul sau doar URNA
Un mic plus pentru raspunsurile deja postate, aici's o Venn's diagramă pentru a rezuma teoria (din Prateek Joshi's frumoasa explicație):
Și un exemplu (de asemenea, de la Prateek's site-ul):
Aceasta este una dintre cele mai confuze și, eventual, subiecte irelevante am'am întâmpinat ca un web profesionale.
După cum am înțeles, un URI este o descriere a ceva, după un format acceptat, care pot defini unul sau ambele numele unic (de identificare) de ceva și locația sa.
Există două subseturi de bază - Url-uri, care definesc locație (mai ales la un browser încercarea de a căuta o pagină web) și Urne, care definesc unic numele de ceva.
Eu tind să cred că de Urne ca fiind similar cu Guid-urile. Ele sunt pur și simplu o metodologie standardizată pentru furnizarea de nume unice pentru lucruri. Ca și în nume declarativ care folosește o companie's nume - l's nu este o resursă așezat pe un server undeva să corespundă cu linia de text - pur și simplu identifică în mod unic ceva.
Am, de asemenea, tendința de a evita complet pe termen URI și de a discuta lucrurile numai din punct de vedere URL-ul sau de URNĂ, după caz, pentru că nu provoacă atât de multă confuzie. Întrebarea ar trebui să încerce să răspundă pentru oameni e't atât de mult semantica, dar cum de a identifica atunci când se confruntă cu termenii indiferent dacă există sau nu există nici o diferență practică în ei, care va schimba modul de abordare a o programare situație. De exemplu, dacă cineva mă corectează în conversație și spune, "oh, asta's nu un URL it's un URI" stiu ei're plin de ea. Dacă cineva spune: "am're folosind o URNĂ pentru a defini resurse" I'm mai multe sanse de a înțelege suntem doar numindu-l în mod unic, nu de localizare pe un server.
Dacă am'm departe de bază - te rog, lasă-mă să știu!
Identificator = Nume + Locație
Fiecare URL(Uniform Resource Locator) este un URI(Uniform Resource Identifier), abstract vorbind, dar de fiecare URI nu este un URL. Nu există o altă subcategorie de URI este URNĂ (Uniform Resource Name), care este un nume de resurse, dar nu precizează cum să le localiza, ca mailto, știri, ISBN este uri-Uri. Sursa
URN:
urn:[nume identificator]:[nume specifice string]
arn:partiție:servicii:regiune:cont-id:resurse
URL:
[sistem]://[Domeniu][Port]/[cale]?[interogare]#[fragmentId]
Analogie: Pentru a ajunge la o persoană: de Conducere(protocol alții SMS, e-mail, telefon), Adresa(hostname alt număr de telefon, emailid) și numele persoanei(nume de obiect cu o cale relativă).
URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier
URL's sunt un subset de URI's (care conțin, de asemenea, Urne).
Practic, un URI este un general de identificare, în cazul în care un URL specifică o locație și o URNĂ specifică un nume.
Un alt exemplu îmi place să folosesc atunci când gândesc Uri este atributul xmlns dintr-un document XML:
<rootElement xmlns:myPrefix="com.mycompany.mynode">
<myPrefix:aNode>some text</myPrefix:aNode>
</rootElement>
În acest caz, com.mycompany.mynode ar fi un URI care identifică în mod unic "myPrefix" namespace pentru toate elementele care să-l utilizați în document XML. Acest lucru NU este un URL pentru că este doar folosit pentru a identifica, nu pentru a localiza ceva în sine.
Din cauza dificultăților de a distinge clar între URI și URL-ul, din câte îmi amintesc W3C nu face o diferență mai intre URI și URL-ul (http://www.w3.org/Addressing/).
Ei're același lucru. Un URI este o generalizare a unui URL. Inițial, uri-Uri au fost planificate pentru a fi împărțite în Url-uri (adrese) și Urne (nume), dar apoi a fost o mică diferență între un URL și URI și http Uri au fost folosite ca spații de nume, chiar dacă acestea nu't de fapt localiza orice resurse.
URI, URL-ul, URNA
Ca imaginea de mai sus indică, există trei componente distincte în joc aici. De obicei e mai bine să mergi la sursă atunci când se discută aceste lucruri, așa că aici e un exerpt de Tim Berners-Lee, et. al. în RFC 3986: Uniform Resource Identifier (URI): Generic Sintaxa:
Un Uniform Resource Identifier (URI) este o secvență de compact caractere care identifică o resursă abstract sau fizice.
UN URI pot fi clasificate în continuare ca un locator, un nume, sau ambele. La termenul de "Uniform Resource Locator" (URL-ul) se referă la subsetul de uri-Uri că, în plus față de identificarea unei resurse, să ofere un mijloc de localizarea resurselor prin descrierea său principal mecanism de acces (de exemplu, rețeaua sa "locație").
URI este un fel de super-clasa de URL's și URNA's. Wikipedia are o articol fine despre ele cu legături cu dreptul set de Rfc-uri.
Wikipedia va oferi toate informațiile de care aveți nevoie aici. Cu referire la http://en.wikipedia.org/wiki/URI:
UN URL este un URI care, în plus față de identificarea unei resurse, oferă mijloace de acțiune asupra sau de a obține o reprezentare a resurselor prin descrierea său principal mecanism de acces sau de rețea "localizare".
URL
Un URL este o specializare URI care definește locația de rețea de o anumită resursă. Spre deosebire de o URNĂ, URL-ul definește modul în care resurse pot fi obținute. Vom folosi Url-uri în fiecare zi, în formă de http://example.cometc. Dar un URL nu't trebuie să fie un URL HTTP, acesta poate fi
ftp://example.com` etc., de asemenea.
URI
Un URI identifică o resursă, fie în funcție de locație, sau un nume, sau ambele. Mai des decât nu, cele mai multe dintre noi folosesc Uri care definește o locație la o resursă. Faptul că un URI poate identifica o resurse de ambele numele și locația a duce la o mulțime de confuzie în opinia mea. Un URI are două specializări cunoscut sub numele de URL-ul și URNA.
Diferența dintre URL-URI și
Un URI este un identificator pentru unele resurse, dar un URL-ul vă oferă informații specifice pentru a obține acea resursă. Un URI este un URL și ca un comentator a subliniat, acum este considerat incorect de a utiliza URL-ul atunci când descrie aplicații. În general, dacă URL-ul descrie atât locația și numele unei resurse, termenul de utilizare este-URI. Deoarece acesta este în general cazul majoritatea dintre noi ne întâlnim în fiecare zi, URI este termenul corect.
Conform RFC 3986, Uri-urile sunt alcătuite din următoarele piese:
scheme://authority/path?query
URI-ul descrie protocol pentru accesarea unei resurse (cale) sau de aplicare (interogare) pe un server (autoritatea).
Toate Url-Uri, și toate Urne sunt uri-Uri, dar toate Uri-urile nu sunt Url-uri.
Vă rugăm să consultați pentru mai multe detalii:
Un URI identifică o resursă, fie în funcție de locație, sau un nume, sau ambele. Mai des decât nu, cele mai multe dintre noi folosesc Uri care definește o locație la o resursă. Faptul că un URI poate identifica o resurse de ambele numele și locația a duce la o mulțime de confuzie în opinia mea. Un URI are două specializări cunoscut sub numele de URL-ul și URNA.
Un URL este o specializare URI care definește locația de rețea de o anumită resursă. Spre deosebire de o URNĂ, URL-ul definește modul în care resurse pot fi obținute. Vom folosi Url-uri în fiecare zi, în formă de https://stackoverflow.com, etc. Dar un URL nu trebuie să fie un URL HTTP, acesta poate fi ftp://example.com
, etc.
Deși termenii URI și URL-ul sunt strict definite, mulți folosesc termeni pentru alte lucruri decât sunt definite pentru.
Să aruncăm Apache de exemplu. Dacă http://example.com/foo este solicitat de un server Apache, va avea următorul set de variabile de mediu:
REDIRECT_URL
: /foo
REQUEST_URI
: /foo
Cu mod_rewrite activat, veți avea, de asemenea, aceste variabile:
REDIRECT_SCRIPT_URL
: /foo
REDIRECT_SCRIPT_URI
: http://example.com/foo
SCRIPT_URL
: /foo
SCRIPT_URI
: http://example.com/foo
Acest lucru ar putea fi motivul pentru care unele de confuzie.