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是应用程序吗?
#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。
评论
这个问题已经在Stack Overflow上问了好几次了,引起了很多关注和良好反响:URI和URL有什么区别?RFC:tools.ietf.org/html/rfc3986