URL 是 Uniform Resource Locator 的缩写,中文叫"统一资源定位符"。名字唬人,干的事很朴素:你在浏览器地址栏看到的那一长串字符就是 URL,它告诉浏览器这个网页在哪、怎么取回来。

比如你点进一篇菜谱,地址栏里显示:

https://example.com/recipes?page=2#tomato

浏览器拿着这串字符做了三件事:用 https 的方式连上 example.com 这台服务器,向它要 recipes 这份资源并附上一句"我要第 2 页"(?page=2),等网页加载完,自动滚到 #tomato 标记的那个小节。整个过程不用你操心,全靠这串地址里的信息。

一眼看懂 / 示意图

问号后面交给服务器,井号后面留给浏览器

一条URL里的五种分工https://example.com/recipes?page=2#tomatohttps://怎样取:协议example.com去哪里:主机/recipes取什么:路径?page=2随请求发给服务器#tomato浏览器自己定位小节
  1. 01?page=2

    随请求发送;示例网站把它解释为第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 的网站。认网址先看主机名从哪开始、到哪结束。