「URL」- 统一资源定位符 | Uniform Resource Locator

认识

URL(Uniform Resource Locator,统一资源定位符)是互联网上标准资源的地址。它就像一个物品在庞大仓库中的具体“位置标签”,告诉浏览器(或客户端)使用什么协议、去哪个服务器的哪个端口、找哪个路径下的哪个文件,以及是否需要携带额外的参数或片段。理解 URL 的各个组成部分对于 Web 开发、SEO(搜索引擎优化)、网络调试和分析都至关重要。

组成

完整格式

[协议] :// [用户名]:[密码]@ [主机名] : [端口号] / [路径] ; [参数] ? [查询字符串] # [片段]

`scheme` :// `user:pass` @ `hostname` : `port` / `path` ; `parameters` ? `query` # `fragment`

在实际应用中,

  • 最常见部分的是:协议、主机名、路径、查询字符串。
  • 其中大部分组件(例如,用户名、密码、端口、参数、……)通常是可选的,

各个组件的详细说明

让我们用一个复杂的(但很能说明问题的)假想例子来分解:
`https://admin:password@www.example.com:8080/docs/user-guide.html;sessionid=12345?page=1&lang=zh#chapter1`

协议 (Scheme)

  • 说明: URL 的起始部分,定义使用哪种协议来访问资源。它告诉客户端必须使用什么规则。
  • 例子: `https://`
  • 常见协议:
    • `http`: 超文本传输协议(未加密)
    • `https`: 安全的超文本传输协议(加密)
    • `ftp`: 文件传输协议
    • `mailto`: 电子邮件地址
    • `file`: 本地计算机上的文件
    • `data`: 直接嵌入的数据(如 Base64 编码的图片)

认证信息 (Authority)

这是一个部分,通常包含以下几个子部分

  • 整体格式: `[user:pass@]hostname:port`

  • 用户名 & 密码 (Userinfo)
    • 说明: 可选部分,用于访问需要身份验证的资源。出于安全考虑,在现代 Web 中极少在 URL 中直接使用,通常由登录表单和 Cookie 等方式代替。
    • 例子: `admin:password@`

  • 主机名 (Hostname)

  • 端口 (Port)
    • 说明: 用于连接到服务器上的特定服务或应用程序。每个协议都有一个默认端口(如 HTTP 是 80,HTTPS 是 443)。如果使用默认端口,则可以省略。
    • 例子: `:8080` (表示连接到服务器的 8080 端口而非默认的 443 端口)

路径 (Path)

  • 说明: 表示服务器上资源的具体位置(通常对应着文件系统的目录和文件结构)。它帮助服务器定位到指定的资源。
  • 例子: `/docs/user-guide.html`
  • 注意: 路径本身不一定对应真实的物理文件,现代 Web 框架常用它来路由(Routing)。

参数 (Parameters)

也叫“矩阵参数”(Matrix Parameters)

  • 说明: 这是一个不常用但存在的部分。用于向服务器提供额外的信息,以分号 `;` 开头,多个参数可以用分号分隔。它与查询字符串(?)不同,通常被解释为路径的一部分。
  • 例子: `;sessionid=12345`
  • 现状: 在现代 Web 开发中,这种功能几乎完全被查询字符串(?)所取代,所以你很少见到它。

查询字符串 (Query String)

  • 说明: 非常常见的部分。以问号 `?` 开头,用于向服务器发送额外的参数。通常用于搜索、筛选、分页等场景。
  • 格式: 由多个`键=值`(key=value)对组成,用 `&` 符号连接。
  • 例子: `?page=1&lang=zh`
    • 这里向服务器发送了两个参数:`page` 的值为 `1`,`lang` 的值为 `zh`。

片段 (Fragment)

也叫“锚点”(Anchor)

  • 说明: 以井号 `#` 开头,用于指定资源内部的某个次级部分。片段不会发送到服务器,仅在浏览器端使用,用于页面内的跳转。
  • 例子: `#chapter1`
    • 浏览器加载完 `user-guide.html` 页面后,会自动滚动到 ID 为 `chapter1` 的 HTML 元素所在的位置。

URI URL URN

  • URI,Uniform Resource Identifier,是统一资源标识符,它是一个更广泛的概念,用于标识互联网上的任何资源。它是所有“标识符”的总称。
  • URL,Uniform Resource Locator,是统一资源定位符。它不仅是标识,更重要的是提供定位和访问该资源的方法(协议、域名、路径等)。所有的 URL 都是 URI。
  • URN,Uniform Resource Name,是统一资源名称。它像一个独一无二的名字(例如 `urn:isbn:0451450523` 来标识一本书),只负责永久地标识一个资源,但不提供定位它的方法。

它们三者的关系可以理解为:URI = URL + URN

应用

在日常交流和网页浏览的语境中,我们几乎总是称 https://www.example.com/user/settings/applications 这种地址为 网址 或 链接,其技术术语就是 URL。

参考

DeepSeek / 介绍 URL 的组成
DeepSeek / https://www.example.com/user/settings/applications 这个地址是 URL 还是 URI