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


当前回答

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

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

其他回答

请参见本文,具体而言,

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

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

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

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

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

答案是双重的,在Java中,它经常以以下方式使用:

统一资源探测器(URL)是用来识别互联网资源的术语,包括方案(http、https、fTP、新闻等)。例如,URI、URL和URN之间的区别是什么?

统一资源识别器(URI)用于在 Web 服务器中识别一个单一文件: 例如 / 问题/176264/whats-the-差异- between-a-uri-and-a-url

在 Java 服务器中, URI 经常提到没有 Web 应用背景的文档。

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

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