# URL

URL全称为Uniform Resource Locator,即统一资源定位符。对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它

URL的一般格式 / 基本结构为:
scheme://hostname[:port]/path/[;parameters][?query]#fragment
`[]`表示的是可选

结构解释:

  1. scheme,通信协议方案,下表列出集中常用的Scheme。

file:资源是本地计算机上的文件。
ftp:通过FTP访问资源。
http:通过HTTP访问该资源。
https:通过安全的HTTP访问该资源。

  1. hostname: 主机,指定的服务器的域名系统 (DNS) 主机名或 IP 地址。有时,在主机名前也可以包含连接到服务器所需的用户名和密码(格username:password@hostname)。
  2. port:端口号,整数,可选,省略时使用方案的默认端口,如http的默认端口为80,https默认为443。
  3. path:路径,由零或多个“/”符号隔开的字符串,一般用来表示主机上的一个目录或文件地址。以http为例,如果不给出path那么默认访问的就是站点的默认主页面。
  4. parameters:参数,这是用于指定特殊参数的可选项。根据传递给URL的参数,来获取某些页面中的特定内容。
  5. query:查询,可选,用于给动态网页(如使用CGI、ISAPI、PHP/JSP/ASP/ASP.NET等技术制作的网页)传递参数,可有多个参数,用“&”符号隔开,每个参数的名和值用“=”符号隔开。类似于关系型数据库select语句中的where字句,用以查询符合条件的数据。

http://www.a.com:801/test.php;gender=f?username=jes&country=usa

  1. fragment:信息片断,字符串,用于指定网络资源中的片断。例如一个网页可能非常的长,有几十上百页,并且有多个名词解释,可使用fragment直接定位到某一名词解释。(锚点)

URL与URI - 图1

  • 注意:Windows 主机不区分 URL 大小写,但是,Unix/Linux 主机区分大小写。
  • parameters、query、parameters可用于负载均衡中,例如可以根据query中的username等于某用户名,来将其定向至某一服务器。

# URL与URI的区别

php中文网:URL和URI之间的区别是什么

https://www.php.cn/div-tutorial-413616.html

URI:Uniform Resource Identifier。。
URL:Uniform Resource Locator。

URL与URI - 图2

可以说URL是URI(URL是URI的子集),但URI永远不能是URL。

CSDN:URI和URL的区别比较与理解

https://blog.csdn.net/qq_32595453/article/details/80563142

<3>URI举例
如:https://blog.csdn.net/qq_32595453/article/details/79516787
我们可以这样解释它:
①这是一个可以通过https协议访问的资源,
②位于主机 blog.csdn.net上,
③通过“/qq_32595453/article/details/79516787”可以对该资源进行唯一标识(注意,这个不一定是完整的路径)
注意:以上三点只不过是对实例的解释,以上三点并不是URI的必要条件,URI只是一种概念,怎样实现无所谓,只要它唯一标识一个资源就可以了。
[

](https://blog.csdn.net/qq_32595453/article/details/80563142)

精选评论

  1. uri是理论或者说规范,url是按照规范的具体实现
  2. 可以这样理解URI表示的是一个抽象的地址,URL表示的是一个详细的地址。 抽象的地址:湖南省长沙市(这是一个抽象的地址,相当于URI) 详细的地址:湖南省长沙市雨花区香樟路22号(这是一个详细的地址,相当于URL) 为什么URL是URI的子集,雨花区的香樟路22号(URL)属于湖南省长沙市(URI), 那么放到web上 https://www.csdn.net是一个URI(它只说明了服务器的地址,没有具体到文件是什么类型) 那么https://www.csdn.net/image/logo.gif就是一个URL(他具体到了logo文件的位置并且logo文件是gif类型的) 这样一来URL和URI的区别就很清晰了

知乎问题:URL 和 URI 有什么不同?

https://www.zhihu.com/question/19557151/answer/12218545

  1. URL 是 URI 的子集。任何东西,只要能够唯一地标识出来,都可以说这个标识是 URI 。如果这个标识是一个可获取到上述对象的路径,那么同时它也可以是一个 URL ;但如果这个标识不提供获取到对象的路径,那么它就必然不是 URL 。
  2. 一句话解释:URI和URL都定义了what the resource is。 URL还定义了how to get the resource
    1. 评论A:how to get the resource改为where the resource is会不会更好?
      1. 回复A:一个网址包http: // http://www.xxx.com/dir/filename.html 中/dir/filename.html就是uri 而整个连接又是url,url包含了指定什么协议(http),在哪个站点(http://www.xxx.com)获得什么资源(/dir/filename.html),作者这个how(用什么协议,在哪里)用的没什么问题的
      2. 回复A:不谢不谢,其实url本质也是uri,uri只要是能唯一标识资源即可,只是url一定要包含how where what,本身也是容易搞混的概念
  3. URI (Identifier) 只讓你可以”區別”資源,URL (Locator) 還讓你可以”找到”資源 (所以URL比一般的URI更”強”, 是URI的子集)比如人的身份證號是 (非Locator的) Identifier: 不同身份證號一定是不同人, 但是用身份證號本身是找不到人的。这个人的住址或座标才是Locator。

danielmiessler:What’s the Difference Between a URI and a URL?

https://danielmiessler.com/study/difference-between-uri-url/
image.png

In other words, in 99% of everyday cases, you should use URL instead of URI because both are technically true but URL is more specific.