在网站上线之前,你会遇到两个相关但不同的概念:域名和完整URL。混淆它们可能导致与协作者沟通出错或在文档中写错地址。本文用一个假设地址来展示每个术语涵盖的范围,以及如何保留一份清晰的记录。
域名告诉你什么,完整URL又增加了什么
假设你正在规划一个小型个人项目,并在便签上写下了一个地址:https://example.org/notes/first-page?view=compact#intro。这串字符纯粹是假设,不意味着该页面真实存在或已经上线。它只是供我们拆解的样本。首先需要注意的是,这串字符包含的信息量远超一个单独的域名。
域名以人类可读且易于记忆的形式标识互联网上的一台服务器。正如MDN所解释的,域名为互联网上任何可用的服务器提供了一个人类可读的地址,解决了原始IP地址难以记忆且可能随时间变化的问题。在我们的示例中,域名部分是example.org。它回答的问题是:我要访问哪台服务器?1
完整URL则更进一步。它是互联网上某个唯一资源的地址,将协议、服务器身份以及资源在该服务器上的具体位置或状态组合在一起。在同一个示例中,完整URL不仅告诉浏览器要联系哪台服务器,还告诉它要请求哪个页面、传递什么可选参数、以及滚动到页面的哪个位置。域名是URL内部的一个组成部分;URL是获取资源的完整指令集。2
逐段阅读示例地址
让我们逐段标注 https://example.org/notes/first-page?view=compact#intro 的每个部分。方案(scheme)是https,它指示浏览器必须使用哪种协议来请求资源。对于网站而言,协议通常是HTTPS或HTTP,方案出现在分隔符://之前。在我们的字符串中,https位于该分隔符的左侧。2
紧跟在://之后的是权限(authority)部分,在本例中就是域名example.org。域名指示正在请求哪台服务器。这里没有显示端口号,因为标准HTTPS默认使用443端口,浏览器在默认情况下会省略它。权限部分在下一个斜杠出现时结束。2
路径是/notes/first-page。它跟在域名之后,描述资源在服务器上的位置。历史上路径代表服务器上的物理文件位置,但如今它主要是由服务器处理的抽象概念。路径之后是查询字符串,由问号字符引导。这里的查询是view=compact,一个向服务器提供额外参数的键值对。最后,井号字符引导片段标识符,在本例中是intro。片段充当资源内部的书签,指引浏览器定位到特定位置。值得注意的是,片段标识符不会随请求发送到服务器;它完全由浏览器处理。2
相同主机,不同路径与查询
现在保持主机部分固定为example.org,观察其他部分变化时会发生什么。如果路径从/notes/first-page变为/notes/second-page,字符串指向的就是同一台服务器上的不同资源。域名没有改变;只有服务器内部的位置发生了移动。这说明路径在字符串结构上独立于域名,尽管服务器最终决定每个路径返回什么内容。
改变查询字符串在字符串层面产生类似效果。将view=compact替换为view=full,域名和路径保持不变,但向服务器传递了不同的参数。服务器是否真的做出不同响应取决于它自身的配置,我们无法仅从字符串判断。我们能确定的是,由于查询部分不同,这两个字符串是不同的URL。
完全去掉片段同样会产生一个不同的字符串,尽管片段永远不会到达服务器。带有#intro的URL和不带片段的同一URL在浏览器地址栏中是不同的标识符。这个区别在你分享链接或撰写文档时很重要:包含片段会告诉接收者的浏览器滚动到特定区域,而省略片段则让页面停留在默认滚动位置。这些观察都不需要了解服务器的配置方式;它们直接来源于URL字符串的结构规则。
为地址制作一张说明卡
记录这个地址的用途,用一句简短的话概括。对于我们的假设项目,用途可以是:以紧凑阅读视图展示第一个笔记页面,并滚动到引言部分。先写下用途,就给了你一个参照点,用来检查URL的每个部分是否真正支持这个目标。
列出完整地址,单独占一行,按照你希望它呈现的样子原样书写:https://example.org/notes/first-page?view=compact#intro。在下方逐项标注每个组成部分。方案:https。域名:example.org。路径:/notes/first-page。查询:view=compact。片段:intro。这就是你的说明卡。它是一份纯文本记录,可以粘贴到项目说明文件中、分享给协作者,或者保存在个人笔记里。
说明卡的格式刻意保持简单。你不是在判断这个地址好不好;你只是在让它的结构变得可见。如果之后你更改了路径或添加了新的查询参数,就同时更新说明卡和用途描述。这让你的文档与实际使用的字符串保持一致。
手工核对你的说明卡
手工核对能发现拼写错误和标签错位,这些在快速书写时很容易被忽略。下面的过程只使用复制和目视比较;不需要特殊工具。
检查分隔符是否在正确的位置。冒号和双斜杠必须出现在方案与域名之间。问号必须出现在路径与查询之间。井号必须出现在查询与片段之间。如果任何分隔符缺失或放错了位置,字符串就不会按你预期的方式解析。
每次编辑后,再次将标注好的说明卡与原始字符串进行比对。即使少了一个斜杠或意外多了一个空格,都可能改变地址的含义。这个习惯只需几秒钟,却能防止协作者粘贴错误链接时产生的那种混乱。
步骤 1
从你的说明卡中复制完整URL,粘贴到一个空白文本文件中。这会给你一个干净的副本,没有任何可能隐藏字符的格式。
步骤 2
从左侧开始,标记每个边界:在https://之后、在example.org之后、在/notes/first-page之后、在?view=compact之后、在#intro之前各画一条线或插入一个空格。标注每个片段对应的角色。
步骤 3
将标注好的各片段与你之前写下的说明卡进行比对。如果每个片段都与标签匹配,且片段之间没有多余字符,说明卡与地址就是一致的。
保留说明供日后参考
核对完成后,将说明卡存放在你下次处理项目时自然会查看的地方。项目文件夹内的一个纯文本文件就很合适,因为它会随其余材料一起保存。如果你在与他人协作,也可以将它粘贴到任务跟踪工具或共享文档中。
这份记录的价值在你需要向别人解释地址时,或者在中断一段时间后回到项目时会变得明显。与其凭记忆重新推断每个片段的含义,不如直接阅读你之前写下的笔记。如果地址发生了变化,就更新说明卡并简要注明改了什么、为什么改。随着时间推移,这就形成了一份小型的决策历史。
你可以选择只保留说明卡的当前版本,也可以同时保留早期版本。两种做法都合理。只保留当前版本能减少杂乱;保留历史则有助于追溯项目的演变过程。关键在于说明卡本身的存在,因为一个未经审视的地址字符串很容易被误读,凭记忆输入时也很容易出错。
常见问题
域名和URL是同一个东西吗?
不是。域名标识服务器,而完整URL包括协议、域名、路径以及可选的查询或片段。域名是URL内部的一个组成部分。12
URL中的片段部分会发送到服务器吗?
不会。片段标识符出现在井号字符之后,完全由浏览器处理,不会随请求发送到服务器。2
两个URL可以共享同一个域名但指向不同资源吗?
可以。两个URL可以拥有相同的域名,但具有不同的路径、查询字符串或片段,各自指向同一台服务器上的不同资源或视图。
What is a Domain Name? - Learn web development | MDN. 采集日期:2026-11-01. ↩︎ ↩︎
What is a URL? - Learn web development | MDN. 采集日期:2026-11-01. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎