一个 URL、一个 URI 和一个 URN 的区别是什么?


当前回答

维基百科将提供您所需的所有信息。 引用来自 http://en.wikipedia.org/wiki/URI:

URL 是一個 URI,除了識別資源之外,還提供行動或獲得資源的代表性的手段,描述其主要接入機制或網路「位置」。

其他回答

简而言之:一个 URI 会识别,一个 URL 会识别和找到。

考虑到莎士比亚的游戏罗密欧和朱丽叶的具体版本,你在你的家庭网络上有一个数字副本。

您可以将文本定义为 urn:isbn:0-486-27557-4. 这将是一个 URI,但更具体的是一个 URN* 因为它命名文本。

您也可以将文本定义为 file://hostname/sharename/RomeoAndJuliet.pdf. 这也将是一个 URI,但更具体的是一个URL,因为它会找到文本。

* 统一资源名称

(请注意,我的例子是从维基百科调整的)

例子

罗杰·帕特

这是我的名字,这是一个识别器,它就像一个URI,但不能是一个URL,因为它告诉你什么关于我的位置或如何联系我。

民间混乱

从维基百科:

乌尔纳

我的名字,罗杰·帕特,可能像一个URN(统一资源名称),除此之外,这些是更有规律的,旨在在在空间和时间上独一无二。

但是,即使没有其他家庭使用这个名字,我被命名为我的祖父,所以它仍然不会是独一无二的时间。

在这种严格的独特性限制中,URN与URL不同,尽管它们都分享了URI的合成。

最好的(技术)总结 imo 是这个一个

统一资源识别器是识别一个抽象或物理资源的字符的紧凑序列. 字符集仅限于US-ASCII 排除一些保留字符. 允许字符集之外的字符可以使用百分比编码来代表。

URL

IRI is a superset of URI (IRI ⊃ URI)
URI is a superset of URL (URI ⊃ URL)
URI is a superset of URN (URI ⊃ URN)
URL and URN are disjoint (URL ∩ URN = ∅)

关于Semantic Web问题的结论

這些是幾個非常好寫的,但很長的答案. 以下是 CodeIgniter 所涉及的差異:

地址: http://example.com/some/page.html

URI - /some/page.html

简单地说,URL是识别任何资源的完整方式,并且可以有不同的协议,如FTP、HTTP、SCP等。

URI 是当前域的资源,因此需要找到更少的信息。

在每个例子中,CodeIgniter使用这个词URL或URI,这是他们正在谈论的差异,尽管在网格的格式中,它不是100%正确的。

下面是我的简化:

URN:独一无二的资源名称,即“什么”(例如 urn:issn:1234-5678 ) 这个意思是独一无二的.. 因为在没有两个不同的文件可以有相同的 urn。

URL: “在哪里”找到它(例如 https://google.com/pub?issnid=1234-5678.. 或 ftp://somesite.com/doc8.pdf )

URI:可以是URN或URL,这种混乱的定义是由于W3C和IETF生产的RFC 3986。

URI的定义在过去的几年里改变了,所以对于大多数人来说是有意义的混淆。 但是,你现在可以放松的是,你可以提到 http://somesite.com/某些东西,无论是URL还是URI......你都会是正确的,无论如何(至少是时光,无论如何...)