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


当前回答

URI类似于URL和URN的超级类,维基百科有一个关于它们的好文章,链接到正确的RFC集。

其他回答

我一直在想同样的事情,我发现了这个: http://docs.kohanaphp.com/helpers/url。

您可以看到一个清晰的例子,使用 url::current() 方法. 如果您有此 URL: http://example.com/kohana/index.php/welcome/home.html?query=string 然后使用 url:current() 给您一个 URI,根据文档,是:欢迎/home

原来,URI计划分为URL(地址)和URN(名称),但然后有一个URL和URI之间很少的差异,而HTTP URI被用作名称空间,尽管它们实际上没有找到任何资源。

首先,把你的头脑脱离混乱,把它简单,你会明白。

URI => 统一资源识别器 识别一个完整的资源地址 i-e 位置,名称或两者。

URL => Uniform Resource Locator 指定资源的位置。

URN => 统一资源名称 识别资源名称

例子

我们有一个地址 https://www.google.com/folder/page.html 在哪里,

URI(统一资源识别器) => https://www.google.com/folder/page.html

URL(Uniform Resource Locator) => https://www.google.com/

URN(统一资源名称) => /folder/page.html

URI => (URL + URN) 或 URL 仅或 URN 仅

根据 RFC 3986, URI 由以下组成:

scheme://authority/path?query

URI 描述了在服务器(权威)上访问资源(路径)或应用程序(请求)的协议。

此分類上一篇

所有 URL 都是 URI,所有 URN 都是 URI,但所有 URI 不是 URL。

请参见更多详细信息:

维基百科

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

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

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

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

* 统一资源名称

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