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


当前回答

例子

罗杰·帕特

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

民间混乱

从维基百科:

乌尔纳

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

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

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

其他回答

从 RFC 3986:

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

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

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

请参见本文,具体而言,

URL 是一个类型的 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

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

s3://www-example-com/index.html [图 1]

http://www.example.com/index.html [图 2]

在亚马逊的S3-US-West-2数据中心。

图 1 是 URI 图 1 是 URN 图 2 是 URI 图 2 是 URL 图 1 的 URL 是 http://www-example-com.s3-website-us-west-2.amazonaws.com/ 也是 http://www-example-com.s3.amazonaws.com/index.html 但不是 http://www-example-com.s3.amazonaws.com/ (没有数据中心和没有文件名是亚马逊 S3 太一般的)

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