URL 是 Uniform Resource Locator 的缩写,中文叫"统一资源定位符"。名字唬人,干的事很朴素:你在浏览器地址栏看到的那一长串字符就是 URL,它告诉浏览器这个网页在哪、怎么取回来。
比如你点进一篇菜谱,地址栏里显示:
https://example.com/recipes?page=2#tomato
浏览器拿着这串字符做了三件事:用 https 的方式连上 example.com 这台服务器,向它要 recipes 这份资源并附上一句"我要第 2 页"(?page=2),等网页加载完,自动滚到 #tomato 标记的那个小节。整个过程不用你操心,全靠这串地址里的信息。
问号后面交给服务器,井号后面留给浏览器
- 01?page=2
随请求发送;示例网站把它解释为第2页
- 02#tomato
不随HTTP请求发送;浏览器定位页内小节
URL各部分一起描述怎么取资源;路径不必等于磁盘文件夹。
一条地址,分四段看
把上面这条拆开,每段各有分工:
1. https:// —— 用什么方式取(协议/方案)。
最常见的是 http 和 https(后者多了加密)。也有别的,比如文件传输用的 ftp。
2. example.com —— 去哪台机器(主机名/域名)。
这一段告诉浏览器找哪台服务器。注意:域名只是 URL 的一部分,不是 URL 本身,就像"小区名"不等于"完整门牌号"。
3. /recipes —— 要哪个资源(路径)。
在这台服务器上,具体要哪一份东西。它常常长得像文件夹路径,但现在是服务器程序来决定怎么回应,/recipes 背后不一定真有一个叫 recipes 的文件。
4. ?page=2 和 #tomato —— 两个附加小纸条。
问号后面是查询参数,随请求一起发给服务器,含义由这个网站自己定(这里约定 page=2 表示第 2 页,换个网站可能是别的意思)。井号后面是片段,只在你自己的浏览器里起作用——它根本不发给服务器,浏览器加载完页面后用它跳到页内某个位置,比如文章的某个小节。
还有两个偶尔露面的部分:example.com:8080 里的冒号加数字是端口(同一台机器上的不同"窗口",http 默认 80、https 默认 443,通常省略不写);user@example.com 里的用户名现在很少在网址里出现了。
为什么有的网址只有半截
网页里的链接经常不写全,只写 /about 或者 ../images/logo.png。这叫相对地址:浏览器会以当前页面的 URL 为参照,把缺的部分补齐再访问。所以同一段 /about,在不同页面里点开,去的可能是不同的地方——它本身不是完整地址,必须有个"参照物"才有确定含义。
另外 URL 不只指向给人看的网页。网页里的每张图片、每个脚本、手机 App 后台调用的接口,背后都是一条 URL。
容易混淆的地方
URL 和网址、域名是不是一回事? 日常说话里"网址"基本就是 URL。严格区分的话:域名只是 URL 里主机名那一段;URI(统一资源标识符)是个更大的概念,URL 是 URI 的一种(负责"定位"的那一种)。普通聊天不用纠结这个,但看技术文档时知道谁大谁小就不晕。
分享链接时留个心眼。 有些 URL 的查询参数里带着你的登录凭证、搜索词或订单号,原样转发等于把这些信息也转发出去了。分享前扫一眼问号后面的内容,是个好习惯。
长得眼熟 ≠ 就是你以为的那个网站。
钓鱼链接常用的把戏是把熟悉的名字放在 URL 的其他段里,比如 bank.com.evil.example/login——完整主机名是 bank.com.evil.example,它属于右边的 evil.example,并不是 bank.com 的网站。认网址先看主机名从哪开始、到哪结束。