侧重点不同
URI 在于I(Identifier)是统一资源标示符,可以唯一标识一个资源。
URL 在于Locater,是统一资源定位符,提供找到该资源的确切路径
URI不要求确切的格式,只要能在一定条件下唯一标识一个资源即可,比如你是一名在读大学生,身份证号123456,学号654321,就读于xx大学yy学院zz专业,那么在Q国用来标识你的URI可以是:
1)身份证号:123456
2)/xx大学所在省/市/xx大学/yy学院/zz专业/654321
这两种方式都成功的在中国境内标识了你这个唯一的人
这里一直强调“Q国境内”,在于URI可以是相对的,也可以是绝对的
简单来说,URI强调一定条件下进行唯一标识,这里的“一定条件”如上述“Q国境内”,若把范围扩大到整个地球,相当于网络中的绝对URI(也是URL,且URL只能是绝对的),并以web网址的形式描述一下呢:
人类查找协议://地球/Q国/xx大学所在省/市/xx大学/yy学院/zz专业/654321
这也是一个URI,同时它也是URL,URL强调定位,即通过某路径确切找到资源,确保可以访问到资源,而URI强调标识。
总结一下:
1)URL是URI的子集,我们所看到的URL是一种特殊的URI,它是URI的一种实现形式,也即一个URL一定是一个URI,但URI不一定是URL
2)URL是绝对的,于整个网络而言,一个提供访问到确切资源的链接是一个URL(也属于URI)
3)URI既有相对性又有绝对性,从RFC 3986 的 4.2. Relative Reference来看:
没有最前面的scheme(就是http:, ftp: 之类的)的URI都是相对引用,www.example.com/abc.html也是个相对引用。相对引用又分为 绝对路径引用 和 相对路径引用,这个划分就和我们分辨文件系统中的相对/绝对路径差不多了: 以 ‘/’ 开头的就是绝对路径引用,否则就是相对路径引用
关于URI的相对性(一定条件)便于理解可以这么来记:
如一个URL(绝对URI):
http://aa/bb/cc/dd/ee/1.html
相对于http://aa/bb/cc/dd,这个1.html文件的URI就是/ee/1.html
相对于http://aa/bb,这个1.html的URI就是/cc/dd/ee/1.html