在你把项目网址分享给别人之前,需要先弄清楚自己给出的到底是什么。域名和完整URL看起来相似,但它们回答的是不同的问题;混淆二者会在写文档、分享链接或排查页面无法打开时造成困扰。本文用一个假设地址逐步拆解这个区别。
域名与完整URL分别回答什么问题
假设你正在准备一个小型个人项目网站,想把最新笔记所在的确切页面发给一位同事。你在消息里输入一串字符然后发送。这串字符可能是 example.org,也可能是一个带有斜杠、问号和井号的更长地址。这两者并不相同。域名标识的是互联网上的一台网络服务器。正如 MDN 所解释的,域名为互联网上任何可用的网络服务器提供了一个人类可读的地址,因为 IP 地址难以记忆且可能随时间变化。1
完整URL则更进一步。它是互联网上某个唯一资源的地址,也是浏览器用来获取已发布资源(如 HTML 页面、CSS 文档和图片)的关键机制之一。换句话说,域名告诉浏览器该联系哪台服务器,而完整URL告诉浏览器该向那台服务器请求哪个具体资源。本练习使用假设地址 https://example.org/notes/first-page?view=compact#intro。这个页面不需要在任何地方真实存在;我们纯粹把它当作一个待拆解和标注的字符串。2
可以这样理解:如果有人问你的项目在哪里,你可以回答域名。如果有人问该打开哪个具体页面以及如何显示,你就需要给出完整URL。本文余下部分将把这个字符串拆分成各个命名组成部分,帮助你对自己的地址建立同样的理解。
在假设地址中标出各部分
从 https://example.org/notes/first-page?view=compact#intro 的最左边开始,第一个片段是 https。MDN 将其描述为方案,它指示浏览器请求资源时必须使用的协议。对于网站,协议通常是 HTTPS 或其未加密版本 HTTP。在我们的示例中,https 告诉浏览器在获取后续内容时使用安全连接。2
在 :// 分隔符之后是 example.org。这是域名,在URL术语中也称为主机。根据 MDN 的说明,域名指示的是被请求的网络服务器。其中 .org 部分是顶级域,MDN 将其描述为域名的最后一个组成部分,通常能提示网站的用途。标签 example 位于顶级域左侧,构成二级域名。13
域名之后是 /notes/first-page。MDN 称之为资源在服务器上的路径。在早期网络中,路径代表服务器上的实际文件位置,但如今它主要是由服务器处理的一种抽象。就我们的目的而言,路径只是指明了我们在 example.org 主机内请求的是哪个资源。紧随其后的问号引入查询字符串。在本例中,view=compact 是一个键值对,向服务器提供额外参数。MDN 指出,服务器可以利用这些参数在返回资源之前进行额外处理。最后,井号引入片段标识符 intro。MDN 特别指出,井号之后的部分不会随请求发送到服务器;它充当资源内部的书签,告诉浏览器页面加载后该滚动到哪个位置。2
保持主机不变,对比不同路径和查询
现在保持主机部分完全不变,只改变路径。将 https://example.org/notes/first-page 与 https://example.org/notes/second-page 以及 https://example.org/about 进行比较。这三个字符串共享相同的方案和相同的域名,因此它们都指向同一台服务器。不同的是被请求的资源。路径就是区分同一站点内不同页面的部分。
接下来,保持路径不变,只改变查询字符串。将 ?view=compact 与 ?view=full 以及完全没有查询的情况进行比较。尽管方案、主机和路径完全相同,它们各自仍是不同的URL字符串。查询参数向服务器提供关于如何呈现或筛选资源的额外指令。我们在此并不声称 example.org 实际会以某种特定方式处理这些参数;我们只是观察到字符串不同,并且从结构上看,查询部分就是此类指令所在的位置。
最后,只改变片段。将 #intro 与 #summary 以及完全没有片段的情况进行比较。由于片段不会发送到服务器,更换片段不会改变服务器返回的资源。它只改变浏览器在该资源内定位视图的位置。这一区别在调试时很重要:如果两个URL仅在片段上不同,服务器看到的是同一个请求,你在屏幕上看到的任何差异都来自浏览器滚动到了同一文档的不同位置。2
为假设项目制作地址说明卡
记录以下信息,为你的假设项目制作一张说明卡。先用一句话写下该地址的用途,例如「这是我最新项目笔记以紧凑布局展示的页面」。然后在下一行写出完整URL:https://example.org/notes/first-page?view=compact#intro。接着在下方列出各部分及其标签。方案:https。主机:example.org。路径:/notes/first-page。查询:view=compact。片段:intro。这张卡片将成为你向他人解释地址或核对自己是否输入正确时的快速参考。
这个练习的价值不在于具体示例本身,而在于它培养的习惯。当你以后使用真实项目地址时,你已经知道该看哪些片段以及每个片段叫什么名称。如果你的实际地址没有查询字符串或没有片段,只需注明这些部分不存在即可。卡片格式保持不变,只是把相应行留空或写上「无」。
选择适合你工作流的格式即可。有些人喜欢把纯文本文件放在项目笔记旁边,有些人把卡片粘贴到任务跟踪工具或共享文档里。重要的是五个标签出现在同一个地方,这样你就能快速浏览,而不必每次从头推导结构逻辑。
用手工复制与逐项标记核对说明卡
检查说明卡上的完整URL是否准确。把它从卡片复制到空白文本编辑器中,不要依赖浏览器地址栏来做这项核对,因为浏览器有时会隐藏或重新排列显示内容。字符串粘贴到纯文本后,从左到右逐步处理。找到冒号加双斜杠的分隔符来标出方案,分隔符之前的所有内容就是方案。分隔符与下一个单斜杠之间的内容是主机。在每个已识别的片段旁写上对应标签。
标注路径时,先找到主机之后的第一个单斜杠。路径从该斜杠一直延伸到问号或井号为止,取先出现的那个符号。如果两个符号都不存在,路径就延伸到字符串末尾。接着寻找问号。如果存在,问号与井号之间(或字符串末尾)的内容就是查询。最后寻找井号,井号之后的所有内容就是片段。将每个标注好的片段与说明卡对照,如果有任何片段缺失或拼写错误,在分享地址之前先修正卡片。
列出你从别人那里收到的URL,用同样的手工核对方法来理解它们指向什么。把字符串拆分成带标签的部分,练习几次后每次不到一分钟就能完成。这能避免常见错误,比如把路径片段误认为查询参数,或者忽略了一个会改变页面滚动位置的片段。
保留说明供以后使用
把完成的说明卡存放在你写文档、草拟邮件或在项目中设置链接时自然会查看的地方。具体存放位置是个人选择。重要的是卡片作为一个完整独立的参考存在,这样你不必每次需要解释或核对地址时都重新推导结构。
当项目增长、页面增多时,考虑为每个对外分享的不同地址各做一张卡片。每张卡片遵循相同格式:用途说明、完整URL和各部分标签。随着时间推移,这组卡片就是你公开地址的轻量地图,在需要更新链接或向协作者解释两个看似相似的地址为何指向不同资源时非常有用。
这个做法刻意保持简单。它不需要文本编辑器以外的任何工具,也不依赖任何特定的托管配置。目标是在使用地址之前养成仔细阅读的习惯,让域名与完整URL的区别变成自然而然的认知,而不是每次都要重新查找的知识点。
常见问题
域名和URL是同一个东西吗?
不是。域名标识的是网络服务器,而完整URL除了域名之外还包括方案、路径、查询和片段等部分,它们共同指定了该服务器上某个具体资源。12
修改URL中的片段会向服务器发送不同的请求吗?
不会。片段标识符位于井号之后,不会随请求发送到服务器。它只告诉浏览器在已加载的资源内滚动到哪个位置。2
每个URL都需要查询字符串吗?
不需要。查询字符串是可选的。许多URL只包含方案、主机和路径。只有当你请求的资源需要额外参数来处理或以特定方式显示时,才需要加入查询。2
What is a Domain Name? - Learn web development | MDN. 采集日期:2026-11-01. ↩︎ ↩︎ ↩︎
What is a URL? - Learn web development | MDN. 采集日期:2026-11-01. ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎ ↩︎
TLD - Glossary | MDN. 采集日期:2026-11-01. ↩︎