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


当前回答

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

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

其他回答

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

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

URI - /some/page.html

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

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

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

URI 源于需要识别网络上的资源,以及其他互联网资源,如电子邮箱,以统一和一致的方式,因此,可以引入一个新的类型的 widget: URI 识别 widget 资源或使用 tel: URI 有网链接会导致电话通话进行,当被召唤时。

例如,URI:中:0E4FC272-5C02-11D9-B115-000A95B55BC8@stackoverflow.com 是一个 URN 识别在其“邮件 ID”字段中包含的电子邮件。

URL - 统一资源探测器

包含关于如何从其位置获取资源的信息,例如:

URN - 统一资源名称

URC - 统一资源引用


经常提出的问题

我不知道,但现代的网页浏览器正在实施数据URI系统。

URL 和 URI 之间的区别与它是否有查询参数有什么关系?

URL 和 URI 之间的区别与哪些字符有任何关系吗?

没有. URL 被定义为一个严格的 URI 子组. 如果一个字符允许一个字符在一个 URL 但不是一个 URI,有一个错误在一个字符. 特征走到很好的细节,关于哪些字符被允许在哪些部分的 URL 和 URI. 某些字符只能允许在 URL 的某些部分,但字符本身不是 URL 和 URI 的区别。

一个URI可以是URL和URN吗?


此分類上一篇

虽然 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

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

对于已经发表的答案,这里有一个Venn的图表来总结理论(从Prateek Joshi的美丽解释):

此分類上一篇

还有一个例子(也来自Prateek的网站):

此分類上一篇