在准备上线网站之前,你会反复输入、复制和分享各种网址。理解地址中每一部分的含义,能帮助你尽早发现拼写错误,也能在与协作者沟通时表达得更清楚。本文通过一个假设地址逐段拆解,演示如何阅读完整的网站地址。

域名与完整URL分别回答什么问题

假设你正在规划一个小型个人项目网站,有人向你询问地址。你可能口头说出“example.org”,也可能在消息里粘贴一段更长的字符串,比如 https://example.org/notes/first-page。两者都有用,但它们回答的是不同的问题。域名告诉对方要在互联网上找到哪台服务器,完整URL则告诉浏览器去那台服务器上获取哪一个具体资源。

域名是互联网基础设施的关键组成部分,它为互联网上任何可用的网络服务器提供了一个人类可读的地址。计算机通过IP地址访问服务器,而IP地址是一长串数字,人们难以记住,并且可能随时间变化。域名充当了这串数字地址的友好别名。12

URL是统一资源定位符的缩写,它更进一步。URL是互联网上某个唯一资源的地址,是浏览器用来获取已发布资源的关键机制之一,这些资源包括HTML页面、图片、样式表等。URL中的域名部分标识了服务器,而其余部分则将请求缩小到该服务器上的某一个具体页面或文件。3

逐段阅读示例地址

本次练习使用以下假设地址:https://example.org/notes/first-page?view=compact#intro。这个地址纯粹为了标注各组成部分而构造,并不声称该页面真实存在或已上线。请把它当作一段待拆解的字符串,而不是一个要访问的目的地。

第一段是https,即协议方案。它指示浏览器必须使用哪种协议来请求资源。对于网站来说,协议通常是HTTPS或其未加密版本HTTP。协议方案后面总是跟着分隔符://,然后才是下一部分。3

接下来是example.org,它是域名,构成了URL的权限部分。权限部分告诉浏览器正在请求哪台网络服务器。在我们的字符串中,example.org就是主机名。域名之后,路径从第一个正斜杠开始。这里的路径是/notes/first-page,表示资源在网络服务器上的位置。3

问号、井号及其后面的内容

继续看示例地址,路径之后出现了?view=compact。问号标志着查询字符串的开始。查询参数是提供给网络服务器的额外键值对,如果有多个参数则用和号分隔。本例中只有一个参数,键是view,值是compact。网络服务器可以利用这些参数来调整返回的内容,不过每台服务器对参数的处理规则各不相同。3

最后,井号引入片段标识符,在我们的示例中是intro。片段相当于资源内部的一个书签,为浏览器指明应显示该书签位置的内容。值得注意的是,片段标识符不会随请求发送给服务器,它只在页面加载到浏览器之后才起作用。3

总结完整拆解:https是协议方案,example.org是域名,/notes/first-page是路径,?view=compact是查询字符串,#intro是片段。每个分隔符标记了一个边界。冒号加双斜杠结束协议方案,主机名后的第一个斜杠开始路径,问号开始查询,井号开始片段。

相同域名下的不同路径与查询

现在保持主机部分example.org不变,想象同一个项目中你可能遇到的另外两个地址。一个是 https://example.org/notes/second-page,另一个是 https://example.org/notes/first-page?view=full。在这两种情况下域名完全相同,意味着浏览器联系的是同一台服务器。变化的是路径或查询字符串,它们告诉服务器去查找不同的资源或应用不同的参数。

这种区别在分享链接时很重要。如果你不小心省略了路径,接收者可能落在与你预期不同的页面上。如果你丢掉了查询字符串,服务器可能返回默认视图而非你正在查看的那个。字符串不只是装饰,每一段都携带着影响浏览器请求内容的信息。

我们并不推断任何特定服务器如何处理这些变化。不同的服务器可能对缺失的查询参数做优雅降级,也可能返回错误。这里的要点只是注意到:问号之前的文字、问号与井号之间的文字、以及井号之后的文字,是同一地址中结构上各不相同的部分。

为假设项目制作地址说明卡

记录该地址的用途,用一句简短的话概括。对于我们的假设项目,你可以写:“这是以紧凑视图显示的主笔记页面,锚定到引言部分。”把用途写在原始字符串旁边,日后需要向协作者解释链接或排查书签问题时就能快速查阅。

将完整地址单独写在一行,保持它应当呈现的原始样式。在下方列出每个组成部分及其标签:协议方案、域名、路径、查询和片段。即使某个地址缺少其中某一部分,注明其缺失也能加深你对结构的理解。例如,像 https://example.org/ 这样的简单首页有协议方案和域名,但除了根路径之外没有有意义的路径,也没有查询和片段。

检查你的说明卡,从左到右朗读地址,在每个分隔符处停顿。到达冒号时说“协议方案”,到达主机名后的第一个斜杠时说“域名”,读到斜杠之间的各段时说“路径”,遇到问号时说“查询”,遇到井号时说“片段”。这种口头走查能帮助你内化每个边界的位置,不必每次都查阅参考资料。

步骤 1

将完整地址从浏览器地址栏或你的笔记中复制到一个纯文本文档。避免使用富文本编辑器,因为它可能引入隐藏的格式字符。

步骤 2

在复制的字符串正下方逐段标注。在https下方写“协议方案”,在example.org下方写“域名”,在/notes/first-page下方写“路径”,在?view=compact下方写“查询”,在#intro下方写“片段”。

步骤 3

将标注好的说明卡与原始地址逐字对照。如果有任何片段缺失或位置错误,在依赖它进行分享或文档编写之前先修正。

保留地址记录供日后使用

一旦说明卡经过验证,把它存放在你日后确实会回看的地方。项目文件夹中的一个简单文本文件就很好用,因为它可搜索且不依赖任何特定工具。有人偏好用电子表格、每行记录一个页面地址;也有人维护一份简短的markdown文档。格式不重要,重要的是养成把信息写下来的习惯。

之后撰写文档、在邮件中分享链接或向设计师描述网站结构时,你可以调出说明卡直接复制精确的字符串,而不必凭记忆重新输入。这降低了在路径中引入拼写错误或丢失查询参数的可能性。随着时间推移,你的说明卡集合会成为网站的一幅小型参考地图。

你不需要记录网站可能提供的每一个地址。从你最常分享的页面或携带有意义查询参数的页面开始。随着项目增长,你可以添加新的说明卡并修订旧的。目标不是为了完整而完整,而是建立一份可靠的记录,让你不必每次需要解释某个内容在哪里时都重新推导结构。

常见问题

域名和URL是同一回事吗?

不是。域名标识的是服务器,而完整URL在域名之外还包含协议方案、路径、查询和片段等部分,它们共同指向该服务器上的一个具体资源。13

井号后面的片段会发送给服务器吗?

不会。片段标识符不会随请求发送给服务器。它只影响浏览器在页面加载后的显示行为,通常是滚动到被书签标记的位置。3

既然路径已经定位了页面,查询字符串为什么还重要?

路径定位的是资源本身,而查询字符串提供额外参数,服务器可以利用这些参数修改响应方式,比如更改显示格式或筛选结果。每台服务器自行决定如何处理这些参数。3