准备第一个网站时,你会遇到两个相关但不同的概念:域名和完整URL。理解它们各自的作用,能帮助你正确阅读地址、规划站点结构,并在与协作者沟通时清楚地表达链接。

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

域名是互联网基础设施的关键部分。它为互联网上任何可用的网络服务器提供一个人类可读的地址。计算机之间通过IP地址互相访问,IP地址是一串数字,人们很难记住,而且可能随时间变化。域名解决了这个问题,给我们一个可以输入、分享和回忆的可读标签,不必去记数字串。1

URL,即统一资源定位符,更进一步。它是互联网上某个唯一资源的地址,也是浏览器用来获取已发布资源(如HTML页面、图片和文档)的关键机制之一。域名标识的是服务器本身,而完整URL指定的是该服务器上你想访问的哪一个具体资源。理论上,每个有效的URL指向一个唯一的资源。2

可以这样理解:域名回答的是「哪栋楼」,完整URL回答的是「那栋楼里的哪个房间、哪个架子」。我们的练习将使用一个假设地址来观察这两个层次如何配合。这个地址是 https://example.org/notes/first-page?view=compact#intro ,它是纯粹为了拆解字符串而编造的示例,不代表任何真实存在或已上线的页面。

在本例中标出地址的各个组成部分

我们来逐段看这个示例地址。字符串以 https 开头,这是方案(scheme)。方案指示浏览器必须使用哪种协议来请求资源。对于网站,协议通常是HTTPS或其未加密版本HTTP。方案告诉浏览器在联系服务器时应遵循哪套规则。2

方案之后是权限部分,由字符模式 :// 与方案分隔。在我们的例子中,权限部分是 example.org,这就是域名,它指示正在请求哪台网络服务器。域名本身也有内部结构:org 是顶级域名,example 是位于它前面的标签。它们共同构成主机部分,在该服务器上所有页面中保持不变。21

域名之后是路径:/notes/first-page。路径代表资源在网络服务器上的位置。在早期网络中,这样的路径代表服务器上的一个物理文件位置,但现在它主要是由网络服务器处理的一种抽象,没有对应的物理实体。路径告诉你服务器上正在被寻址的是哪个资源。2

保持主机不变,对比不同路径与查询字符串

现在保持示例的主机部分不变,变化其他部分。考虑三个共享相同方案和域名的字符串:https://example.org/notes/first-page?view=compact#intro、https://example.org/notes/second-page?view=full 以及 https://example.org/archive/summary。域名 example.org 在三者中完全相同,变化的是路径、查询以及是否存在片段。

第一个和第二个字符串共享相同的目录 /notes/,但指向其中不同的页面:first-page 与 second-page。它们还携带不同的查询参数,view=compact 与 view=full。第三个字符串使用了完全不同的路径 /archive/summary,并且没有查询字符串也没有片段。这是三个不同的字符串,浏览器会将每一个视为指向不同资源的独立地址。

需要说明的是,我们在这里只是观察字符串的结构,并不对服务器实际会返回什么或如何处理参数做出断言。不同的网络服务器按照自己的规则处理路径和参数,了解某台具体服务器如何处理它们的唯一可靠方式是询问服务器所有者。我们的目标只是认识到:即使域名相同,改变路径或查询就会产生不同的URL字符串。

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

为你计划使用或分享网络地址的任何项目写一张简短的说明卡。对于我们的假设示例,卡片可以包含四个字段:地址的用途、完整URL字符串、域名部分和路径部分。用途字段帮助你记住这个地址为什么重要。在我们的例子中,用途可以写成「用于学习URL结构的演示地址」。

记录完整地址时保留其原样,包括方案、问号和井号。这些字符中哪怕微小的差异都会改变字符串的含义。对于本例,完整地址是 https://example.org/notes/first-page?view=compact#intro。在它下方注明域名是 example.org,路径是 /notes/first-page。这种分离使你在与他人讨论各个部分或检查链接是否被正确复制时更加方便。

你还可以加一行注明哪些部分是可选的。在我们的例子中,查询字符串和片段都是可选组件。如果完全去掉 ?view=compact#intro,你仍然拥有一个指向同一服务器上同一路径的有效URL。记录哪些部分是必需的、哪些是补充性的,有助于你日后需要分享简化版地址时,或者排查某个链接行为与预期不同时快速定位原因。

用手工复制与逐项标记核对说明卡

检查你的说明卡时,把完整地址复制到一个纯文本编辑器中,然后手动标记每个边界。在方案之后、域名之后、路径之后以及查询和片段之前各放一个空格或换行。这种视觉分隔能让你更容易发现缺失的斜杠、错位的问号或域名部分的拼写错误。

使用一致的标签体系,让你创建的每一张说明卡都遵循相同的格式。例如,你可以把方案标为「协议」、域名标为「主机」、路径标为「资源路径」、查询标为「参数」、片段标为「锚点」。保持标签一致意味着当你几周后回看这张卡片时,不需要重新学习自己的简写。

记录你创建卡片的日期以及你打算使用该地址的场景。如果地址属于像我们这样的假设练习,请明确注明,以免日后误以为它是一个真实链接。如果它属于一个真实项目,请注明项目名称。这个小习惯能防止你在积累多张卡片后产生混淆,帮助你区分工作示例和正式地址。

保留这份记录供日后写作与沟通使用

说明卡核对完毕后,把它存放在你日后确实会查看的地方。对于大多数人来说,项目文件夹中的一个简单文本文件就足够了。格式的重要性不如保持记录可获取这个习惯本身。当你撰写文档、与协作者分享链接或调试一个加载结果不符合预期的地址时,保存好的拆解版本能让你免于从头重新解析字符串。

当你在其他场景中遇到不熟悉的地址时,也可以复用同样的卡片格式。如果同事发来一个很长的URL而你需要理解它指向什么,就用同样的标签来拆解:方案、主机、路径、参数、片段。把这些标签写在不熟悉的字符串旁边,就能把一串令人困惑的字符变成一份你可以推理的结构化描述。

你的卡片详细程度取决于你自己的工作流。有些人只需要域名和路径,有些人希望记录每一个参数。没有唯一正确的详细程度。重要的是未来的你看到卡片时能立刻理解地址每个部分的作用,而不需要重新查阅规则。这种自给自足的能力,就是在网站上线之前学习URL结构的实际目标。

常见问题

域名和URL是同一个东西吗?

不是。域名标识的是网络服务器,而完整URL标识的是该服务器上的某个具体资源。URL包含域名作为其组成部分之一,此外还包括方案、路径,以及可选的查询字符串和片段。2

URL中的问号起什么作用?

问号标示查询字符串的开始。问号之后的内容由键值对组成,为网络服务器提供额外参数。在我们的例子中,?view=compact 告诉服务器有一个名为 view、值为 compact 的参数。2

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

不会。井号之后的部分也称为片段标识符,它不会随请求一起发送到服务器。它由浏览器使用,用于在资源内部滚动到被标记为书签的位置。2