准备第一个网站时,域名和URL这两个词会反复出现。它们在浏览器地址栏里看起来很像,但各自回答的问题不同。本文用一个假设地址逐段拆解,帮你理解每一部分的含义,并给出简单的记录方法。
域名与完整URL分别回答什么问题
假设你正在规划一个小型个人笔记站点,草拟了一个地址:https://example.org/notes/first-page?view=compact#intro。这是一个仅用于本文拆解练习的假设字符串,并不代表该页面真实存在或已上线。从整体看,它由斜杠、问号和井号等符号分隔成若干不同的部分。在管理或描述自己的站点地址之前,先弄清每一部分负责什么,会让后续工作更顺畅。
域名回答的问题是「我要访问哪台服务器或哪个站点」。域名是互联网基础设施的关键部分,它为网络上任何可用的Web服务器提供一个人类可读的地址,因为原始IP地址既难以记忆也可能随时间变化。在本例中,域名部分是example.org,它标识了将接收请求的那台主机。1
完整URL回答的问题更具体:「那台服务器上的哪一个资源是我要的?」URL是互联网上某个唯一资源的地址,也是浏览器用来获取已发布资源(如HTML页面、图片、样式表等)的关键机制之一。同一个域名可以承载许多不同的资源,因此URL在域名之外还需要更多细节来定位某一项具体内容。2
在本例中标出每一个组成部分
把假设地址https://example.org/notes/first-page?view=compact#intro按边界符号拆开。第一部分https是方案(scheme),它告诉浏览器请求资源时应使用哪种协议。对网站而言,方案通常是HTTPS或其未加密版本HTTP。方案后面的://是分隔符,表示接下来的部分是权限区域(authority)。2
本例中的权限区域是example.org,也就是域名,它告诉浏览器要请求的是哪台Web服务器。域名位于://分隔符与开始路径的第一个正斜杠之间。URL由不同部分组成,有些是必需的,有些是可选的;在浏览器地址栏输入地址时,域名属于必需的部分之一。2
域名之后是路径,本例中为/notes/first-page,它指向服务器上的某个具体资源。路径之后,问号引出查询字符串:view=compact。查询参数是提供给Web服务器的额外键值对,问号始终是标志这一部分开始的符号。最后,井号引出片段标识符:intro。片段相当于资源内部的一个书签,为浏览器指示应显示到哪个位置。值得注意的是,片段标识符不会随请求一起发送到服务器。2
保持主机不变,对比不同路径与查询
现在保持主机部分example.org不变,只替换路径。如果把/notes/first-page换成/notes/second-page,就得到一个指向同一服务器上不同资源的新URL。域名没有变化,请求仍然发往同一台主机,但路径将服务器引导到该主机内的另一个位置。这就是核心区别:域名标识服务器,路径标识服务器上的资源。
接下来保持主机和路径都不变,只修改查询字符串。把view=compact换成view=full,得到https://example.org/notes/first-page?view=full。路径仍然指向同一个资源,但查询参数不同了。每台Web服务器对参数有自己的处理规则,因此仅从字符串本身可以观察到参数发生了变化,但无法确认服务器具体会如何响应。这个练习的重点是注意字符串如何变化,而不是预测服务器行为。
也可以把片段完全去掉。地址https://example.org/notes/first-page?view=compact仍然是一个有效的URL,只是缺少了让浏览器滚动到特定区域的书签。因为片段是可选的且不会到达服务器,去掉它不会改变所请求的资源。练习这些小的变化有助于你分辨URL中哪些部分是结构性的,哪些是补充性的。
为假设项目制作一张地址说明卡
为你自己的项目写一张简短的说明卡,记录三样东西:这个地址的用途、完整的URL字符串、以及各部分的拆解。例如,如果你的假设笔记项目有一个用于紧凑阅读模式的页面,可以这样写——用途:第一篇笔记的紧凑视图;完整地址:https://example.org/notes/first-page?view=compact#intro;方案:https;域名:example.org;路径:/notes/first-page;查询:view=compact;片段:intro。
同时记录每个选择背后的理由。为什么选了这样的路径结构?也许你希望所有笔记都归在/notes/目录下以便日后查找。为什么加入查询参数?也许你计划为同一内容提供紧凑和完整两种视图。把这些理由哪怕简短地写下来,将来与合作者讨论地址或隔段时间重新打开项目时,都能作为参考。
保持说明卡简洁,聚焦于字符串本身可观察的内容。不需要猜测服务器如何处理每个部分或幕后发生了什么。目标是一份清晰、人类可读的摘要,让你或其他人一眼就能理解地址的结构。如果项目日后扩展到多个页面,可以为每个地址做一张卡,也可以把相关地址归到同一个标题下。
用手工复制与逐项标记核对说明卡
检查你的说明卡是否与原始地址字符串一致:把完整URL复制到一个纯文本编辑器中,手动标出每一个边界。这种低技术方法能发现拼写错误和遗漏的符号,而只在浏览器地址栏里匆匆一瞥时很容易忽略这些细节。
标完所有边界后,把每一段标记出的内容与说明卡上对应条目逐一比较。如果卡上写的路径是/notes/first-page,但复制出来的字符串显示为/notes/firstpage(缺少连字符),你就发现了一个值得在地址被使用之前修正的差异。
每次修改地址后都重复这个检查。新增一个查询参数、重命名路径中的某一段、或更改片段,都是适合快速手工比对的时机,能防止小错误在后续累积。
步骤 1
把说明卡上的完整URL复制并粘贴到一个空白文本文件中。在每个边界符号前放置一个空格或可见标记:://分隔符、路径中的每个正斜杠、问号和井号。
步骤 2
逐段朗读标记之间的内容,与说明卡上对应字段逐词比较。记录任何不匹配之处,修正说明卡并保存更新后的版本。
保留这份记录供以后使用
把地址说明卡存放在你经常查看的地方,比如项目笔记文件或站点规划文档中的一个专门区域。具体格式不太重要,重要的是需要分享地址、撰写文档或排查链接问题时能快速找到它。
自行决定记录多少细节。有人觉得标注创建日期或选择某个路径名的原因很有用;也有人偏好只保留完整URL和一行用途说明的极简记录。两种方式都可以,只要信息准确且容易找到。
随着时间推移,这些小记录会成为你的个人参考,省去每次凭记忆重新推导地址结构的麻烦。当你最终添加更多页面、修改查询参数或将项目交给别人时,一份写好的拆解说明能让你清楚地解释地址,而不必从头开始。
常见问题
域名和URL是同一个东西吗?
不是。域名标识的是服务器,而完整URL在域名之外还包含方案、路径、查询和片段等部分,它们合在一起指向一个具体的资源。12
井号后面的片段会发送到服务器吗?
不会。片段标识符用于让浏览器滚动到资源内部的某个书签位置,它不会随请求一起发送到服务器。2
只改查询字符串会改变加载的页面吗?
路径决定的是所寻址的资源,因此只修改查询字符串时,同一个资源仍在视野中。不过每台Web服务器对参数有自己的处理规则,所以实际可见的结果取决于该服务器的配置。2