我已阅读以下页面:



http://www.w3.org/TR/uri-clarification/


http://www.damnhandy.com/2007/11/19/uri-vs-url-whats-the-difference/


我了解有关URL,URN和URI的基本知识;但是它们之间的差异很小。我无法理解的是在这样的页面中:http://www.bernzilla.com/item.php?id=100哪一部分是URL,URN和URI!

维基百科上的图片

编辑:
来自w3c.org:


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





现在,在描述应用程序时使用URL被认为是不正确的。 ?那应用部分呢? PHP是应用程序吗?

评论

这个问题已经在Stack Overflow上问了好几次了,引起了很多关注和良好反响:URI和URL有什么区别?

RFC:tools.ietf.org/html/rfc3986

#1 楼



URL-统一资源定位器


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


http://example.com/mypage.html
ftp://example.com/download.zip
mailto:user@example.com
file:///home/user/file.txt
tel:1-888-555-5555
http://example.com/resource?foo=bar#fragment

/other/link.html (相对URL,仅在另一个URL的上下文中有用)

URL总是以协议(http)开头,并且通常包含诸如网络主机名(example.com)之类的信息,并且通常包含文档路径( /foo/mypage.html)。 URL可能具有查询参数和片段标识符。

URN-统一资源名称它通常以前缀urn:开头,例如:



urn:isbn:0451450523以书的ISBN号标识一本书。 br />
urn:uuid:6e8bc430-9c3a-11d9-9669-0800200c9a66-一种XML名称空间,用于将文档识别为书籍的类型。

URN可以识别思想和概念。它们不限于识别文件。如果URN确实表示文档,则可以通过“解析器”将其翻译为URL。然后可以从URL下载该文档。

URI-统一资源标识符


URI包含URL,URN和其他标识资源的方式。

既不是URL也不是URN的URI的示例是数据URI,例如urn:publishing:book。它不是URL也不是URN,因为URI包含数据。它既没有命名,也没有告诉您如何通过网络定位它。

也有统一的资源引用(URC),它们指向有关文档的元数据而不是文档本身。 URC的一个示例是用于查看网页源代码的标识符:data:,Hello%20World。 URC是URL也不是URN的另一种URI。

常见问题解答

我听说我不应该再说URL了,为什么?

HTML的W3规范指出,定位标记的view-source:http://example.com/可以包含URI,而不仅仅是URL。您应该能够放入诸如href之类的URN。然后,您的浏览器会将URN解析为URL,然后为您下载该书。

是否有任何浏览器实际上知道如何通过URN提取文档? ,但是现代网络浏览器确实实现了数据URI方案。

URL和URI之间的区别是否与相对还是绝对有关?

不。相对URL和绝对URL都是URL(和URI)。

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

否。带有和不带有查询参数的URL都是URL(和URI)。

URL和URI之间的区别是否与片段标识符有关?

否。带有和不带有片段标识符的URL都是URL(和URI)。

但是W3C现在不是说URL和URI是同一回事吗? W3C意识到对此存在很多困惑。他们发布了URI澄清文档,说现在可以互换使用URL和URI(表示URI)了。严格将URI分为不同的类型(例如URL,URN和URC)不再有用。

URI既可以是URL又可以是URN吗?现在,URN的内容比我上面所说的要宽松。最新的URI RFC规定,任何URI现在只要具有“名称属性”,就可以成为URN(无论它是否以<a href="urn:isbn:0451450523">开头)。即:即使资源不再存在或变得不可用,它也具有全局唯一性和持久性。例如:HTML文档类型(例如urn:)中使用的URI。即使删除了w3.org网站上的页面,该URI仍将继续命名HTML4过渡文档类型。

评论


使W3C澄清和URL / URI区别困惑的是,实际上许多Web服务器文档将URL描述为整个请求字符串,而将URI描述为“遵循协议的部分”。它甚至通过变量名$ uri引用该部分。例如:nginx.com/blog/creating-nginx-rewrite-rules从W3C定义来看,这严格地说不是“正确”的吗?但这是我认为最有用的。

– Mike
16年11月15日在5:36

URI被广泛误解了。许多人认为URI是URL的一部分,例如相对URL,或者遵循协议。这从来都不是正确的,但是这些想法经常使它成为服务器文档或编程API。

–斯蒂芬·奥斯特米尔(Stephen Ostermiller)♦
16年11月15日10:00

#2 楼

我认为这些文章解释得很好。要回答您的问题-所有这些都是URL:

http://www.bernzilla.com/item.php?id=100


每一个-http: www.bernzilla.com等都有自己的名字:


http:是方案
www是子域
bernzilla.com是域
com是顶级域或TLD
(可以是一个文件夹或路径,例如/dir/item.php,但没有)
item.php是页面或文件名,其扩展名为php
id = 100是查询字符串

我可以从Wikipedia看到该图,但是为什么要问。该图表明URI有两种类型-URL和URN,中间的模糊位是什么时候可以同时存在。

评论


感谢您的回答。我编辑了问题。你可以再看看吗?

–撤消
2011年9月2日于13:35

我不理解有关描述应用程序的引用,也看不到有人指出的评论。我将更新答案以描述各个部分。

–paulmorriss
2011年9月2日下午13:53

@paul您不是在第一行中表示URI吗? id = 100不是位置,而是指示符。

–心怀不满的山羊
2011年9月7日下午14:37

我想我的意思是URL。在某些网站上,如果您更改ID,通常来说会得到不同的“页面”。阅读维基百科上资源的定义,我认为页面是资源的一个示例。

–paulmorriss
2011年9月7日14:43在

#3 楼

您提到的URL并非由URL和URN部分组成。

http://www.bernzilla.com/item.php?id=100既是URL又是URI。

基本上URI是超集URL和URN。 URL和URN之间也有一些重叠。


URI可以通过位置或名称或两者来标识资源。一个URI,但并非每个URI都是URL。