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


当前回答

不要忘记 URNs. URIs 和 URLs 都是 URNs. URLs 有位置:

URI: foo
URL: http://some.domain.com/foo
URL: http://some.domain.com:8080/foo
URL: ftp://some.domain.com/foo

他们都是URN。

其他回答

请参见本文,具体而言,

URL 是一个类型的 URI,通过其主要访问机制(例如,其网络“位置”)的代表来识别一个资源,而不是它可能具有某些其他属性。

这不是一个非常清晰的术语,真的。

URI => http://en.wikipedia.org/wiki/Uniform_Resource_Identifier

URL 是 URI 的子组(也包含 URN)。

基本上,一个 URI 是一个通用识别器,在那里一个 URL 指定一个位置,而一个 URN 指定一个名字。

一个 URI 通过位置或名称识别一个资源,或者两者。 更常见的是,我们大多数人使用定义一个资源的位置的 URI. 事实上,一个 URI 可以通过名称和位置识别一个资源,在我看来导致了很多混乱。

URL 是 URI 的专业化,它定义了一个特定的资源的网络位置. 与 URN 不同,URL 定义了资源可以获得的方式. 我们每天使用 URL 以 http://stackoverflow.com 等的形式,但一个 URL 不必是一个 HTTP URL,它可以是 ftp://example.com 等。

从 RFC 3986:

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

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

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

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

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