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。