准备第一个网站时,你会同时遇到域名和URL这两个概念。弄清楚它们各自告诉你什么、又怎样组合成一条完整地址,能帮助你在上线之前规划页面、书写链接并与他人讨论项目。

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

假设你正在为一个小型个人笔记项目做规划,在便签上写下了地址 https://example.org/notes/first-page?view=compact#intro。这是一个纯粹用于练习拆解的假设字符串,并不指向任何真实存在或已发布的页面。尽管如此,它包含了真实网址中会出现的所有主要组成部分,因此适合作为学习术语的起点。

域名回答的问题是「我在和哪台服务器通信」。域名是互联网基础设施的关键部分,它为互联网上任何可用的网络服务器提供了人类可读的地址,因为计算机使用的数字IP地址难以被人记住,而且可能随时间变化。在本例中,example.org就是域名。它告诉浏览器应该联系哪台机器,但并没有说明你需要那台机器上的哪个具体文件或页面。1

完整URL回答的问题更具体:「那台服务器上的哪一个资源是我需要的?」URL是互联网上唯一资源的地址,也是浏览器用来获取已发布资源(如HTML页面、图片或样式表)的关键机制之一。在本例中,从https到#intro的整条字符串就是完整URL。它把域名给出的宽泛目的地缩小到一个特定的位置。2

在本例中逐段标出各组成部分

本例字符串的第一个词元是https,称为方案(scheme)。方案指示浏览器请求资源时必须使用的协议。对于普通网站,协议通常是HTTPS或其未加密版本HTTP。在我们的假设地址中,https告诉浏览器在最终联系服务器时使用安全连接。2

方案和分隔符://之后的部分是权限(authority),在本例中权限的域名部分是example.org,即处理请求的主机。主机之后是路径/notes/first-page。这类路径在早期代表服务器上的物理文件位置,如今主要是由网络服务器处理的抽象概念,并不对应真实的物理文件。路径仍然起到标签作用,用来区分同一主机上的不同资源。2

路径之后还出现两个组成部分。问号引导查询字符串,本例中是view=compact。查询参数是提供给网络服务器的额外键值对,服务器可以利用它们调整返回的内容。井号引导片段(fragment),本例中是intro。片段相当于资源内部的一个书签,告诉浏览器应显示该书签位置的内容。值得注意的是,井号后面的部分不会随请求发送到服务器,它完全在客户端处理。2

保持主机不变,对比不同路径和查询

现在保持主机部分example.org不变,想象第二条地址:https://example.org/notes/second-page?view=compact#intro。唯一的变化是路径从first-page变为second-page,方案、主机、查询和片段在位置与语法上保持相同。这说明字符串的各组成部分是相互独立的,编辑其中一部分不会自动改变其他部分。

接下来,在其余部分与原始示例相同的前提下修改查询:https://example.org/notes/first-page?view=full#intro。字符串现在携带了不同的参数值。我们可以观察到文本确实不同,但不应据此推断服务器对view=full和view=compact分别做了什么。每个网络服务器对参数有自己的规则,要确认某个服务器是否处理特定参数,唯一可靠的方式是询问该服务器的所有者。2

最后,完全去掉片段:https://example.org/notes/first-page?view=compact。这条地址仍然有效,仍然指向同一主机上的同一资源并携带相同的查询。片段本来就是可选的。这些细小的变化表明,URL是一个结构化字符串,其中问号、与号和井号各自标记着组成部分之间的边界。识别这些边界能让你在阅读和编辑地址时无需猜测。

给假设项目做一张地址说明卡

记录一张简短的说明卡,为项目中将使用的每条地址建档。对于这个假设的笔记项目,说明卡可以包含四行:一行写明页面用途,一行逐字抄录完整地址,一行分别列出方案、主机、路径、查询和片段,一行留给你想记住的备注,比如为什么选了某个路径名称。

用你觉得自然的格式书写说明卡——纯文本文件、常用笔记应用或电子表格中的一行都可以。重要的是完整地址只出现一次且逐字准确,这样你始终有一份唯一参照。如果之后需要修改路径或添加查询参数,先编辑说明卡,再更新指向该地址的链接。

在说明卡上把各部分分开记录,也方便你与合作者沟通。你可以直接说「主机不变,只改了路径」,而不必粘贴两条长字符串让对方自己找差异。这个习惯在规划阶段几乎不花时间,等项目超出单个页面之后能省去不少混乱。

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

一次快速的手工核对能在造成混乱之前发现拼写错误和分隔符错位。这个过程刻意保持简单,不需要任何特殊工具。

检查每个分隔符的顺序:确认方案以冒号结尾,权限以两个斜杠开头,路径以单个斜杠开头,查询以问号开头,片段以井号开头。如果任何分隔符缺失或位置不对,说明卡需要修正。

将说明卡与地址的原始来源做对比——如果地址是队友在消息中发来的,就把那条消息并排打开。这最后一步确保转录过程中没有遗漏。

步骤 1

从说明卡中将完整地址复制到空白文本编辑器中,单独占一行。

步骤 2

标注每个边界:在每个问号、井号和://分隔符的前后各加一个空格,使各部分在视觉上彼此分离。

步骤 3

逐段阅读隔离出来的每个部分,确认它与说明卡上对应组件的记录一致。如果说明卡上的路径写的是/notes/first-page,而隔离文本显示的是/notes/firstpage,你就发现了一处需要修正的差异。

保留这份说明供以后使用

说明卡核对完成后,把它存放在你真正会查看的地方。如果你正在为网站撰写内容,写内部链接时把说明卡保持打开状态,确保输入的路径与规划的路径一致。如果你要把项目分享给朋友或合作者,说明卡提供了一份简洁的摘要,可以直接粘贴到消息中,不必从头解释每个组成部分。

随着项目增长,你可以为每个页面或每个板块各添加一张说明卡。格式保持不变,只是内容值不同。因为每张卡都把主机与路径、查询分开记录,你能快速看出哪些页面共享同一主机、哪些页面不同,从而更容易发现站点中的命名不一致。

笔记做到多详细完全由你自己决定。有人会增加一栏记录上次核对地址的日期,有人只保留上述四行。目标不是建一个数据库,而是有一个可靠的地方把地址及其含义写在一起,这样你永远不需要仅凭记忆去重建一条地址。

常见问题

example.org是一个可以访问的真实网站吗?

不是。地址 https://example.org/notes/first-page?view=compact#intro 在本文中仅作为拆解URL各组成部分的假设字符串使用,并不指向任何已发布的页面。

修改查询字符串一定会改变页面显示的内容吗?

不一定。查询字符串会发送到服务器,但每个服务器自行决定如何处理参数。两个不同的查询值可能返回完全相同的内容,也可能返回不同的视图。仅凭URL本身无法保证可见的差异。2

分享链接时必须带上片段吗?

取决于你是否希望接收者直接定位到页面内的某个位置。片段是可选的,而且不会发送到服务器,它只告诉浏览器应滚动到哪里。如果省略片段,接收者仍然会到达同一资源,只是从页面顶部开始浏览。2