准备个人网站或小型项目时,你会遇到两个相关但不同的概念:域名和完整URL。理解它们各自告诉你什么信息、各部分如何组合,能帮助你在上线前自信地阅读、书写和沟通网站地址。12
域名与完整URL分别回答什么问题
假设你正在规划一个小型笔记站点,并写下地址 https://example.org/notes/first-page?view=compact#intro 作为工作示例。这个地址完全是假设的,它存在的目的只是让我们把它拆开,逐一观察每个部分。在拆解之前,先理解域名和完整URL分别回答的两个不同问题会有帮助。
域名回答的问题是「我在找哪台服务器或哪个站点」。域名为互联网上任何可用的网络服务器提供了人类可读的地址。计算机通过IP地址定位服务器,而IP地址是数字形式的,人们难以记忆,因此域名充当了便于记忆的替代方案。在我们的示例中,example.org 就是域名。它指向某台特定的服务器,但并不指定该服务器上的任何具体页面或文件。1
完整URL回答的是一个更具体的问题:「我要那台服务器上的哪个确切资源」。URL是互联网上某个唯一资源的地址,也是浏览器用来获取已发布资源(如HTML页面、图片或样式表)的关键机制之一。完整的字符串 https://example.org/notes/first-page?view=compact#intro 所做的不仅仅是命名服务器,它还描述了一条路径、一个查询和一个片段,从而缩小浏览器应当请求的范围。2
在示例中标出地址的各个部分
让我们从左到右逐步走过这个示例地址。第一段 https 是协议方案,它告诉浏览器在请求资源时应使用哪种协议。对于网站而言,协议方案通常是HTTPS或其未加密版本HTTP。协议方案之后是授权部分,以字符组合 :// 分隔。在我们的示例中,授权部分就是 example.org,即标识网络服务器的域名。2
域名之后是路径:/notes/first-page。路径表示资源在网络服务器上的位置。在早期网页时代,这样的路径对应服务器上的物理文件位置,但如今它主要是由服务器处理的抽象概念,并不对应真实的物理文件。路径之后是查询字符串,由问号引导:?view=compact。参数是提供给网络服务器的额外键值对,问号正是标志这一部分开始的字符。2
最后,井号引导片段:#intro。锚点相当于资源内部的一个书签,为浏览器指示应显示该书签位置处的内容。值得注意的是,井号之后的部分也称为片段标识符,它不会随请求一起发送到服务器。因此总结来说,问号引导查询,井号引导片段,它们各自标志着地址字符串中一个明确的边界。2
保持主机不变,对比不同路径与查询
现在保持示例中的主机部分 example.org 不变,只修改路径和查询。考虑 https://example.org/notes/second-page?view=full 。域名没有变化,因此浏览器仍然指向同一台服务器。不同的是路径现在指向另一个位置标签,查询值也从 compact 变成了 full。这些纯粹是字符串层面的观察,我们并不对某台特定服务器会如何响应每种变体做任何推断。
再考虑另一个变体:https://example.org/archive/2024?sort=date 。这里路径切换到了一个完全不同的目录标签,查询的键本身也从 view 变成了 sort。域名仍然是同一个锚点。这说明域名作为对服务器的引用保持不变,而路径和查询可以广泛变化,以描述同一台服务器上的不同资源或不同指令。路径与查询的每种组合都会产生一个不同的URL字符串。
你也可以完全去掉查询。地址 https://example.org/notes/first-page 包含协议方案、域名和路径,但没有问号也没有参数。片段同样可以省略。这些可选部分不会改变被寻址的服务器,它们只是细化了向该服务器请求的内容。识别哪些部分固定、哪些部分可变,是规划自己站点结构时的一个有用习惯。
为假设项目制作一张地址说明卡
记录你的假设项目的目的,用一句话写在卡片或笔记文件的顶部。例如,你可以写:「这是一个用于收集短篇文章草稿的个人笔记站点。」这句话提醒你地址存在的原因和它应当服务的内容。把目的放在地址旁边,可以在你日后管理多个项目时避免混淆。
在下一行写出完整地址:https://example.org/notes/first-page?view=compact#intro 。然后在下方列出每个部分并附上简短标签。协议方案:https。域名:example.org。路径:/notes/first-page。查询:view=compact。片段:intro。这样的分解让你一眼就能看清字符串的哪个部分承担哪个角色。
最后加一行记录你有意做出的选择。例如,你可能注明选择 notes 作为路径段是因为它与你计划在项目文件中使用的文件夹名称一致,或者你选择 compact 作为默认视图是因为它适合你的阅读偏好。这些是你自己的决定,不是任何标准强加的规则,记录下来有助于你向合作者或未来的自己解释你的地址。
手工核对说明卡
说明卡写好后,将完整地址复制到一个纯文本编辑器中进行验证。这个手动步骤能捕捉到你在阅读格式化文档时可能忽略的拼写错误。把地址粘贴在单独一行上,让其他内容不会分散你的注意力。
从左侧开始,确认协议方案与你记录的一致。然后依次检查域名、路径、查询和片段。如果任何一段与你的说明卡不匹配,在继续之前先修正说明卡或地址。
所有段落核对无误后,大声朗读完整地址或分享给一位同事。在全新的语境中听到或看到地址,往往能暴露出小错误,比如缺少的斜杠或交换的字符。这最后一次通读是一个简单的质量习惯,几乎不花时间,却能防止已发布链接中的尴尬失误。
步骤 1
将完整地址从说明卡复制到纯文本编辑器中,放在单独一行,周围不留其他文字。
步骤 2
从左侧开始,依次标注或高亮每个段落:协议方案、域名、路径、查询和片段。将每个高亮段落与说明卡上的标签逐一比较。
步骤 3
如果所有段落都匹配,大声朗读一遍完整地址。如果有任何段落不一致,修正不匹配之处并从开头重新检查。
保留说明供日后使用
把完成的说明卡存放在你会自然回顾的地方,比如项目自述文件、共享文档或专用笔记文件夹。目标不是遵循某个特定工具推荐,而是简单地把信息放在你日后需要它的语境附近。如果你后来撰写文档、与设计师分享地址或调试链接,已有的分解记录能省去每次重新推导的时间。
随着项目发展,你可能会发现记录选择在演变。也许你添加了更多页面并希望记录路径的命名模式,或者引入了新的查询参数并希望记录每个参数控制什么。随时更新说明卡可以保持其准确性,而无需在最后进行大规模重写。
写下地址各部分含义的做法并不局限于这一个示例。每当你遇到一个不熟悉的URL时,都可以应用同样的分解方法:识别协议方案、域名、路径以及任何查询或片段。随着时间推移,这会变成一种快速的思维习惯,但为你自己项目的地址保留一份书面记录仍然有价值,因为它记录的是你的具体决定和理由,而不仅仅是通用结构。
常见问题
在示例地址中,查询和片段有什么区别?
查询由问号引导,向网络服务器提供额外的键值参数。片段由井号引导,充当资源内部的书签,并且不会随请求一起发送到服务器。2
如果只改路径但保持域名不变,是指向了一台不同的服务器吗?
不是。域名标识的是服务器。修改路径、查询或片段会产生一个不同的URL,指向同一台服务器上的不同资源或指令,但服务器本身仍然是域名所标识的那一台。12
把页面地址分享给别人时,需要包含片段吗?
不一定。片段引导浏览器定位到页面内的某个特定位置。如果你希望对方直接到达某个章节,就包含它;如果只是想让对方到达该页面,不含片段的地址就足够了。2