协议
主机
端口
路径
查询参数
查询参数(parameter)是提供给服务器的额外信息。参数的位置是在路径后面,两者之间使用?
分隔,上例是?key1=value1&key2=value2
。
=
)连接。比如,key1=value
就是一个键值对,key1
是键名,value1
是键值。
多组参数之间使用&
连接,比如key1=value1&key2=value2
。
## 锚点
锚点(anchor)是网页内部的定位点,使用#
加上锚点名称,放在网址的最后,比如#anchor
。浏览器加载页面以后,会自动滚动到锚点所在的位置。
锚点名称通过网页元素的id
属性命名
## URL字符
## 绝对URL和相对URL
绝对 URL 指的是,只靠 URL 本身就能确定资源的位置。这意味着,URL 必须带有资源的完整信息,包含协议、主机、路径等部分。
相对 URL 指的是,URL 不包含资源位置的全部信息,必须结合当前网页的位置,才能定位资源。比如,当前网页的 URL 是[https://www.example.com/path/index.html](https://www.example.com/path/index.html)
,该网页上面有一个资源,URL 指向a.html
,这个就是相对 URL。因为只知道a.html
,并不能定位资源。浏览器假定,a.html
与当前网址在同一个子目录下面,从而得到绝对 URL [https://www.example.com/path/a.html](https://www.example.com/path/a.html)
。
相对 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 的计算基准。整张网页只能有一个<base>
标签,而且只能放在<head>
里面。它是单独使用的标签,没有闭合标签,下面是一个例子。
<head>
<base href="https://www.example.com/files/" target="_blank">
</head>
<base>
标签的href
属性给出计算的基准网址,target
属性给出如何打开链接的说明(参见《链接》一章)。已知计算基准是[https://www.example.com/files/](https://www.example.com/files/)
,那么相对 URL foo.html
,就可以转成绝对 URL [https://www.example.com/files/foo.html](https://www.example.com/files/foo.html)
。
注意,<base>
标签必须至少具有href
属性或target
属性之一。
<base href="http://foo.com/app/">
<base target="_blank">
一旦设置了<base>
,就对整个网页都有效。如果要改变某个链接的行为,只能用绝对链接替代相对链接。尤其需要注意锚点,这时锚点也是针对<base>
计算的,而不是针对当前网页的 URL。