如果你正在准备第一个网站,“域名”和“URL”这两个词会频繁出现,但它们的含义并不相同。本文用一个假设地址逐段拆解,展示每个概念覆盖的范围以及如何阅读地址字符串的各个部分。

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

假设你正在规划一个小型个人项目网站,想把其中某个页面分享给朋友。你给出的地址可能长这样:https://example.org/notes/first-page?view=compact#intro。这是一个纯粹用于阅读练习的假设示例,该页面并不存在,也从未上线。重点是让我们有一个具体的字符串可以一起拆解。

域名回答的问题是:我在和互联网上的哪台服务器通信?域名是互联网基础设施的关键组成部分,因为它们为任何可用的网络服务器提供了人类可读的地址。计算机之间通过数字形式的IP地址互相寻址,但人们很难记住这些数字,而且它们可能随时间变化,域名正是为了解决这个可读性问题而存在的。12

完整URL回答的是另一个问题:我要访问那台服务器上的哪个具体资源,以及怎样到达它?URL是互联网上某个唯一资源的地址,也是浏览器用来获取已发布资源(如HTML页面、CSS文档和图片)的关键机制之一。在我们的示例中,example.org是域名,但包含协议、路径、查询和片段在内的整串字符才是完整的URL。3

逐段阅读示例地址

现在来标注假设地址的每个部分。字符串https://example.org/notes/first-page?view=compact#intro可以这样拆解:协议部分是https,它指示浏览器必须使用哪种协议来请求资源;权限部分包含域名example.org;域名之后是路径/notes/first-page,指向网络服务器上的某个资源;问号引出查询字符串view=compact;井号引出片段标识符intro。3

有两个标点符号值得特别注意,因为它们标示了边界。问号始终将路径与查询参数分开,问号之后的内容由键值对组成,网络服务器可以用这些参数在返回资源之前做额外处理。井号始终将主地址与片段标识符分开,片段相当于资源内部的一个书签,为浏览器指示应显示的内容位置。值得注意的是,井号之后的部分不会随请求发送到服务器。3

域名本身也有内部结构。域名由若干部分组成,用点号分隔,从右向左阅读。在example.org中,最右边的org是顶级域,它向用户传达该域名背后服务的一般用途;标签example是二级域。它们合在一起构成完全限定域名,再加上协议https://就变成了一条完整的URL。14

相同主机、不同路径与查询

现在保持示例的主机部分不变,只改变其余内容。想象第二个地址:https://example.org/notes/second-page?view=full。协议和域名完全相同,但路径指向了不同的资源标签,查询参数的值也不同,片段则完全缺失,这意味着没有请求资源内部的特定书签位置。这些都是字符串本身的差异,我们并不对服务器实际会如何处理它们做任何推断。

第三种变体可以是https://example.org/notes/first-page#intro,查询被完全移除但片段保留。这说明各部分是相互独立的:你可以添加或移除查询而不影响片段,反之亦然;路径可以改变而域名保持不变。URL字符串的每个片段承载各自的信息,理解这种分离有助于你阅读遇到的任何地址。

值得重申的是,这些观察针对的是字符串结构,而非服务器行为。URL标准定义了各部分的组成方式,但每台网络服务器对参数有自己的规则,确认某台特定服务器是否处理参数的唯一可靠方式是询问该服务器的所有者。因此,阅读地址时你可以识别每个部分的名称和它在URL格式中的角色,但不能假设任何特定服务器会如何响应。3

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

记录一张简短的说明卡,在正式开始搭建之前为你的假设项目留下地址文档。卡片不需要多精致,一个纯文本文件或常用笔记应用里的条目就够了。对于本文的示例,卡片可以包含四个字段:页面用途、完整地址字符串、各部分的标注分解,以及一段简短的选择理由。

用一句非技术合作者也能理解的话写出用途。例如,本示例的用途字段可以写成:个人笔记本项目中第一篇笔记的精简视图。然后原样复制你打算使用的完整地址。在下方逐行列出每个组成部分:协议为https,域名为example.org,路径为/notes/first-page,查询为view=compact,片段为intro。这份标注分解在你与他人讨论地址时就是参照。

理由字段用来记录你的选择依据。也许你选择路径段notes是因为项目把内容组织成类似笔记的页面,选了first-page作为简单的顺序标签;也许你加上查询view=compact是因为计划提供两种显示模式。这些都不是任何技术标准的要求,只是你对自身决策的文档记录。把理由和地址放在一起,有助于你之后添加更多页面时保持一致性。

手工核对你的说明卡

说明卡拟好之后,一次快速的手工检查可以在分享地址或嵌入网站之前发现拼写错误和标注偏差。以下步骤是普通作者建议,并非任何规范的要求。

检查每个标注是否符合前面学到的标点规则。确认问号只出现一次,且问号与井号之间的所有内容都属于查询。确认井号只出现一次,且井号之后的所有内容都是片段。如果地址没有查询,就不应有问号;如果没有片段,就不应有井号。

把完整地址大声读出来,或请一位朋友从卡片上读给你听。缓慢朗读字符串往往能暴露默读时眼睛会跳过的缺失斜杠、字母颠倒或多余空格。这种低技术手段对于发现自动工具未必标记的错误出奇有效,尤其适合简短的个人项目地址。

步骤 1

把说明卡上的完整地址复制到一个空白文本编辑器中,确认粘贴过程中没有引入多余空格或换行。

步骤 2

手工标注每个边界字符:在协议后的冒号加双斜杠下方画线,给问号画框,给井号画圈,然后将你的标注与卡片上的分解逐项对照。

步骤 3

写一行总结,说明哪些部分存在、哪些部分缺失。对本示例而言应注明:协议、域名、路径、查询和片段均存在,端口缺失。

保留记录供日后参考

把地址说明卡存放在你真正会回看的地方。项目笔记中的专用文件夹、置顶便签,甚至网站主配置文件顶部的注释都可以。目标不在于存储格式,而在于养成一个习惯:让地址及其分解始终存在于同一个权威位置。日后添加第二个页面或修改查询参数时,更新卡片就能立刻看到变化。

列出说明卡作为沟通工具的用法。当你在论坛求助或与协作者讨论时,把标注分解和原始地址一起贴出来能节省所有人的时间。对方不必猜测你困惑的是哪个部分,因为你已经把它隔离出来了。当项目超出单个页面、需要讨论共享同一域名但路径或查询不同的多个地址时,这一点尤其有用。

最后,把说明卡当作一份活文档。第一版反映的是你最初的选择,这完全没问题。随着项目演进,你可能重命名路径段、添加新的查询参数或去掉不再需要的片段。每次更新卡片都能让你对地址的理解与网站实际使用的内容保持同步。书写、核对和修订一份简短说明的实践,比记住任何单条规则更有价值,因为它培养了你在遇到地址时仔细阅读的习惯。

常见问题

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

不会。根据URL规范,井号之后的部分即片段标识符不会随请求发送到服务器,它充当的是资源在客户端内部的书签。3

域名和URL的区别是什么?

域名标识你在与哪台网络服务器通信,而URL是某个具体资源的完整地址。URL包含协议、域名,以及可选的路径、查询和片段,域名是完整URL中的一个组成部分。13

可以只改路径或查询而不改域名吗?

可以。路径和查询是URL字符串中相互独立的部分。你可以把路径从/notes/first-page改为/notes/second-page,或调整查询的值,同时保持域名example.org完全不变。每个部分承载各自的信息,可以分别修改。