URL简介

325 阅读3分钟

url是什么

url是统一资源定位符,中文意思就是网址。

https://www.example.com/path/index.html

实际上,所谓的资源其实就是访问互联网上的各种文件。而url就是门牌号,可以通过url来访问这些文件。

一个资源可以有很多个url,但是一个url只能对一个资源。就比如你有很多门牌号(中文英文等形式或者就是叫法不同),但是一个门牌号(url)就是指定的你这个地方(资源)。

url组成部分

示例:

https://www.example.com:80/path/to/myfile.html?key1=value1&key2=value2#anchor

1、协议

示例中的https:就是通信协议,http是安全协议,https是升级版,目前比较流行的是https,后面的://是http协议要求加的。

2、主机

www.example.com是域名,是资源所在的网站名或服务器的名字。代表了服务端设备主机,有些地方没有域名,只有ip地址,例如 :192.168.xxx.xx。同样也可以代表主机

3、端口

:80指的是端口号,一个域名下可能包含多个网站,它们之间通过端口区分。默认端口号是80,冒号是紧跟在端口号后面的。

4、路径

/path/to/myfile.html是路径,也就是指向了主机下/path/to目录下的文件myfile.html。

路径可以只有目录,不带文件,比如写/path/或者是/path,那么服务器可能会访问该路径下的文件。

例如访问www.baidu.com有可能访问的是www.baidu.com/index.html,服务器会自动选择,当然也要看服务器的设置

5、查询参数

查询参数key1=value1&key2=value2是提供给服务器的额外信息,在前面标记一个号来分割。

查询参数是键值对的形式,用=来链接键跟值,多组参数用&来组合

6、锚点

#号后面的是锚点名称,锚点就是网站内部的锚点,如果有锚点会自动跳到这个位置

#号跟html的标签的id做关联。

转义

有些网站的文件是以中文名命名的,会被转义成符合url的字符,例如:

访问www.example.com/中国.html这个网址,需要写成下面的样子。

www.example.com/%e4%b8%ad%e5%9b%bd.html

绝对url和相对url

绝对url指的是需要完整的资源位置,例如主机名、路径等

相对url指的是没有完整的资源地址,给的是相对于目前所在的资源位置,所能定位的地址

相对 URL 如果以斜杠/开头,就表示网站的根目录。否则,必须以当前目录为起点,推算资源的位置。比如,相对 URL /foo/bar.html表示网站根目录的子目录foo,foo/bar.html表示在当前目录的foo子目录。

URL 还可以使用两个特殊简写,表示特定位置。

.表示当前目录,比如./a.html(当前目录下的a.html文件)

..表示上级目录,比如../a.html(上级目录下的a.html文件)

这两种简写可以多个连用,比如../../表示上两级目录。

绝对 URL 也可以使用这两个简写, 比如www.example.com/./index.html等同于www.example.com/index.html,这时.相当于根目录的当前目录,即根目录本身。

base标签

<base>标签指定网页内部的所有相对 URL 的计算基准。整张网页只能有一个标签,而且只能放在里面。它是单独使用的标签,没有闭合标签,下面是一个例子。

<head>
<base href="https://www.example.com/files/" target="_blank">
</head>

base标签的href属性给出计算的基准网址

已知计算基准是https://www.example.com/files/,那么相对 URL foo.html,就可以转成绝对 URL https://www.example.com/files/foo.html

注意,base标签必须至少具有href属性或target属性之一。

<base href="http://foo.com/app/">
<base target="_blank">

一旦设置了base,就对整个网页都有效。如果要改变某个链接的行为,只能用绝对链接替代相对链接。尤其需要注意锚点,这时锚点也是针对计算的,而不是针对当前网页的 URL。