准备第一个网站时,你很快就会遇到两个看起来几乎相同但用途不同的概念:域名和URL。本文用一个假设地址逐段拆解,展示每个部分的含义,并介绍如何在上线前整理好自己的地址记录。

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

第一次准备网站时,两个术语几乎立刻出现:域名和URL。它们看起来相似,有时被人混用,但它们回答的是不同的问题。域名以人类可以阅读和记忆的形式标识互联网上的一台网络服务器。域名提供了人类可读的地址,解决了IP地址难以记忆且可能随时间变化的问题。而URL是互联网上某个唯一资源的地址,它不仅告诉浏览器要联系哪台服务器,还指明要从该服务器获取哪一项具体资源。12

为了让这个区别更具体,我们使用一个贯穿全文的假设地址:https://example.org/notes/first-page?view=compact#intro。这个页面并不真实存在,也没有在任何地方上线,它纯粹是为了拆解字符串各部分而拼装的。其中域名部分example.org指向一台服务器,域名之后的所有内容则进一步缩小范围,指明浏览器应当请求该服务器上的哪一项资源。2

MDN提供了一个有用的类比:可以把URL想象成一个邮政地址。域名相当于城市或城镇,路径代表邮件应送达的建筑物,参数代表建筑物内的补充信息比如公寓编号,锚点则代表你实际写信给的那个人。每一部分都增加了一层具体性,合在一起定位到某一项特定资源。2

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

现在来逐段标注这个假设字符串。第一部分https是方案,它指示浏览器必须使用哪种协议来请求资源。对于网站,协议通常是HTTPS或其未加密版本HTTP。方案与地址其余部分之间由字符模式://分隔。2

接下来的部分example.org是域名,它标识被请求的是哪台网络服务器。在这个域名内部,org是顶级域,它向用户传达该域名背后服务的一般用途。最通用的顶级域如.com、.org和.net不要求网络服务满足任何特定条件。标签example位于顶级域左侧,被称为二级域名。13

域名之后是路径:/notes/first-page。路径表示资源在网络服务器上的位置。在早期,这样的路径代表服务器上的物理文件位置,而如今它大多是服务器处理的一种抽象,不再对应真实的物理文件。路径之后,问号引出查询字符串:view=compact。参数是提供给网络服务器的额外键值对,每台服务器对参数的处理规则各不相同。最后,井号引出片段:intro。锚点代表资源内部的一种书签,为浏览器指示显示该书签位置内容的方向。值得注意的是,井号之后的部分也被称为片段标识符,它不会随请求一起发送给服务器。2

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

现在保持主机部分example.org完全不变,只改变路径和查询。假设你还计划一个位于/notes/second-page的页面且不带任何查询字符串,以及另一个位于/gallery?sort=date的页面。将这三个字符串并排观察,你会发现方案和域名完全相同,而路径和查询各不相同。字符串/notes/first-page?view=compact#intro指向一项带有特定显示偏好和书签的资源;字符串/notes/second-page指向同一服务器上不带任何额外参数的另一项资源;字符串/gallery?sort=date则指向又一项带有自身参数的资源。

这一观察纯粹关于字符串本身的结构,我们并不推断服务器实际如何处理这些请求,也不推断这些页面是否存在。要点在于:即使域名保持不变,路径和查询的每一种不同组合都会产生一个不同的URL。当你为项目规划多个页面时,每个页面将有自己的路径,任何可选参数都会进一步区分不同的请求。

还可以注意到,原始示例中的片段标识符#intro在另外两个地址中并未出现。片段是可选的,只有当资源本身为其定义了目标时才有意义。如果你在上线前记录网站结构,标注哪些页面会使用片段、哪些不会,有助于保持记录的完整性。

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

记录你计划使用的每个地址,为它们各写一张简短的说明卡。以我们的假设示例为例,卡片可以包含四个字段:页面用途、完整URL、域名、以及路径连同查询和片段。例如,用途可以写成「首次笔记页面的紧凑视图,便于快速查阅」;完整URL为https://example.org/notes/first-page?view=compact#intro;域名为example.org;路径为/notes/first-page,查询为view=compact,片段为intro。这张卡片不是任何技术规范的要求,它只是让你自己的规划保持有条理的一种方式。

为每个地址单独建一张卡,而不是把所有内容堆在一段文字里。如果你的项目最终会有五个或十个页面,每张卡片都保持简短且便于复查。你可以把这些卡片存在纯文本文件、电子表格或笔记应用中,格式不如一致性重要——关键是每张卡都记录相同的字段。

当你是项目唯一的参与者时,用途字段可能显得多余,但一旦你需要向别人解释网站结构,或者隔了一段时间再回来看,它的价值就会显现。一句用途描述能提醒你某个特定路径和查询组合存在的原因,减少数周后重新审视计划时的困惑。

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

检查说明卡是否完整之前,先将完整URL从卡片中复制并粘贴到同一文档的一行空白处。然后逐个字符地审视这个字符串,标出每个部分的起止位置。这个手工过程能发现快速阅读时容易忽略的拼写错误、缺失的斜杠或错位的问号。

确认方案存在且拼写正确。核实域名部分与你的意图一致,注意标签与顶级域之间的圆点。验证路径是否紧跟域名之后以正斜杠开头。如果存在查询,确认它以问号开始,并且每个键值对使用等号连接。如果存在片段,确认它以井号开始且位于查询之后。

发现任何不一致时,直接在卡片上记录修正,而不是只在脑中改掉。如果原始卡片写的是/notes/first-page而复制出的字符串显示为/notes/firstpage,就在卡片上标注纠正并更新。这个习惯能建立一份可靠的参考,日后无需从头重新检查即可信任。

步骤 1

将完整URL从说明卡中复制到同一文档的一行空白处。

步骤 2

找到://模式,标出方案与域名之间的分界。

步骤 3

找到域名之后的第一个正斜杠,标出域名与路径之间的分界。

步骤 4

如果存在问号,将其标为查询字符串的起点,并逐一核对每个键值对。

保留地址记录供日后写作与沟通使用

说明卡核对完成后,将它们存放在你真正会回顾的位置。项目目录中的一个专用文件夹或常用应用中一条置顶笔记都可以。目标不是创建正式文档,而是让地址详情与其他规划材料放在一起,形成一个可靠的存放处。

当你撰写内容并链接到自己的页面时,回看这些卡片而不是凭记忆输入地址。这能减少在正式链接中引入拼写错误的机会。如果你与他人协作,分享相关卡片能给他们确切的地址而不产生歧义,当路径包含多个段落或查询参数时尤其有用。

随着时间推移,你可以选择为卡片添加字段,例如页面创建日期或地址对应的内容版本说明。这些补充完全由你决定。这种做法的核心价值在于:你为每个地址拥有一份经过核对的单一参考,并可以按照自己的工作流随意扩展。

常见问题

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

不是。域名以人类可读的形式标识一台网络服务器,而URL是该服务器上某项具体资源的完整地址。URL包含域名以及方案、路径、查询和片段等额外部分。12

URL中的片段部分会发送给服务器吗?

不会。片段标识符即井号之后的部分不会随请求一起发送给服务器,它由浏览器用来滚动到资源内部的书签位置。2

我规划的每个URL都需要包含查询字符串吗?

不需要。查询字符串是可选的,只有当你想向网络服务器传递额外参数时才使用。一个只包含方案、域名和路径的URL完全有效。2