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


当前回答

从 RFC 3986:

“Uniform Resource Locator”(URL)是指URI的子组,除了识别资源之外,它还提供了通过描述其主要访问机制(例如,其网络的“位置”)来定位资源的手段。

因此,所有URL都是URI,所有URL都是URI,但URL和URL都是不同的,所以你不能说所有URL都是URL。

如果你还没有阅读罗杰·帕特的答案,我会建议你这样做。

其他回答

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

scheme://authority/path?query

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

此分類上一篇

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

请参见更多详细信息:

维基百科

虽然 URI 和 URL 术语是严格定义的,但许多人使用这些术语的其他事物,而不是它们的定义。

如果从 Apache 服务器要求 http://example.com/foo,您将设置以下环境变量:

REDIRECT_URL: /foo REQUEST_URI: /foo

使用 mod_rewrite 启用,您还将有以下变量:

REDIRECT_SCRIPT_URL: /foo REDIRECT_SCRIPT_URI: http://example.com/foo SCRIPT_URL: /foo SCRIPT_URI: http://example.com/foo

这可能是某些混乱的原因。

我找到了:


一个统一的资源识别器(URI)代表一个大图像的东西. 你可以分 URIs / URIs 可以分类为位置(统一的资源识别器-URL),或名称(统一的资源名称-URN),或两者。 因此,基本上,一个URN 功能如一个人的名字和URL 描述这个人的地址. 如此长的故事短,一个URN 定义一个项目的身份,而URL 提供定义

根據定義 URL 是 URI 的子集 [RFC2396]. URI 包含 URN 和 URL. 兩個 URI 和 URL 都有自己的特定的合成,這給他們的狀態是 URI 或 URL. URN 是為了獨特地識別一個資源,而 URL 是為了找到一個資源。

作为网页开发人员和程序员,我们将几乎总是关心URL,因此URI. 现在一个URL是具体定义的所有部分图表:图表特定的部分,如 https://stackoverflow.com/问答. 这是一个URL,也是一个URI. 现在考虑一个相对链接嵌入到页面,如../index.html. 这不再是一个URL的定义。

例子

罗杰·帕特

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

民间混乱

从维基百科:

乌尔纳

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

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

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