在发布网站之前,你需要理解域名和完整URL之间的区别。本文通过一个假设地址,逐一标注每个组成部分,并展示如何制作一张简单的参考卡片,方便你在撰写内容或分享链接时随时查阅。
域名与完整URL分别回答什么问题
假设你正在规划一个用于分享读书笔记的小型个人网站。你可能听过别人说注册一个域名和分享一个链接,但这两件事指向的并不是同一个概念。域名回答的问题是“我要访问哪台服务器或哪个组织”,而完整URL回答的是“我要获取该服务器上的哪个具体资源,以及用什么方式去请求”。这个区别之所以重要,是因为你在日常交流中会用域名来概括描述自己的网站,但每次创建页面、插入链接或告诉别人某个文档的位置时,你实际使用的都是完整URL。12
域名之所以存在,是因为底层网络用数字形式的IP地址来标识机器,而这些数字对人类来说既难记忆又可能随时间变化。域名为服务器提供了一个稳定、易读的标签,映射到服务器当前使用的地址。URL在这个标签的基础上增加了方向信息:使用哪种协议、到达后沿哪条路径前进、以及可选地应用哪些参数或书签。换句话说,域名是目的地,URL是完整的行程说明。12
本文接下来将使用一个假设地址来使这些概念变得具体。这个地址是 https://example.org/notes/first-page?view=compact#intro 。它不是一个真实存在的页面,纯粹用于练习阅读URL的结构。下面所有观察都只涉及这个字符串本身所传达的信息,不涉及任何特定服务器可能如何处理它。
在本例中标出各组成部分
将字符串 https://example.org/notes/first-page?view=compact#intro 按自然边界拆分。方案部分是https,它告诉浏览器在请求资源时使用安全的HTTP协议。权限部分从 :// 之后开始,包含域名 example.org。路径是 /notes/first-page,指向该服务器上的一个特定资源。问号之后的所有内容是查询字符串,这里是 view=compact。井号之后的所有内容是片段标识符,这里是 intro。问号引导查询部分,井号引导片段部分。2
域名本身也有内部结构。在 example.org 中,标签 org 是顶级域名,它给出关于服务用途或类别的一般性提示。标签 example 是二级域名,也就是大多数人所说的名字。顶级域名由ICANN指定的组织管理,完整列表由该机构集中维护。像 .com、.org 和 .net 这样的顶级域名是通用的,不施加特定的资格标准,而其他一些顶级域名则带有使用限制。13
注意路径、查询和片段都是可选组成部分。像 https://example.org/ 这样的URL完全有效,它指向服务器指定为默认的资源。我们的示例恰好包含了全部三个可选部分,以便逐一标注。当你构建自己的网站时,你会决定页面实际需要哪些路径和参数;并非每个页面都需要查询字符串或片段。2
保持主机不变,对比不同路径与查询
现在保持主机部分 example.org 不变,设想另外两个地址:https://example.org/notes/second-page 和 https://example.org/notes/first-page?view=full。第一个与原示例共享相同的域名和相同的顶级目录,但指向不同的路径。第二个与原示例共享完全相同的路径,但携带不同的查询参数值。这三个字符串都到达同一台服务器,但每一个都标识了一个不同的资源或同一资源的不同呈现方式。2
这个观察在规划网站结构时很有用。如果两个页面位于同一域名下但路径不同,它们就是拥有不同URL的独立资源。如果一个页面可以通过不同的查询参数来显示,那么这些变体会产生不同的URL,即使底层路径没有变化。你不需要知道某台特定服务器将如何处理这些变体;关键在于URL字符串本身编码了这种区别,任何阅读该字符串的人都能看出一个地址在哪里结束、另一个地址从哪里开始。2
片段标识符的行为略有不同。与路径和查询不同,片段永远不会随请求发送到服务器。它告诉浏览器在已获取的文档中滚动或聚焦到哪个位置。因此 https://example.org/notes/first-page#intro 和 https://example.org/notes/first-page#summary 会向服务器请求相同的资源,但指示浏览器显示文档的不同部分。2
为假设项目制作一张地址说明卡
记录一张简短的卡片,写下地址各部分的用途。对于我们假设的读书笔记项目,卡片内容可以是这样的:网站的目的是分享带批注的读书笔记;完整示例地址是 https://example.org/notes/first-page?view=compact#intro ;域名是 example.org;顶级域名是 org;路径是 /notes/first-page;查询是 view=compact;片段是 intro。把所有信息集中在一张卡片上,意味着你以后不需要凭记忆重新推导结构。
记录你选择每个值的原因,即使原因只是暂时作为占位符。例如,你可能注明路径 /notes/first-page 反映了你打算在文件组织中镜像的文件夹结构,或者查询 view=compact 代表你想为访问者提供的一种显示模式。这些笔记是供你自己参考的,不需要遵循任何外部标准。目标是通过记录你最初的想法,使未来的决策变得更容易。
如果你的项目最终会有多个页面,在同一张卡片上用相同的域名但不同的路径草拟几个额外的地址。这能让你快速直观地感受URL结构将如何增长。你并没有做出任何承诺,只是在网站上线之前练习阅读和书写完整地址的习惯。
用手工复制与逐项标记核对说明卡
卡片写好后,用一个简单的手工流程对照实际字符串进行验证。这能发现快速阅读时容易忽略的拼写错误、缺失的斜杠和错位的标点符号。
检查卡片上的每个标签是否与对应的子字符串完全匹配。将完整地址复制到纯文本编辑器中,然后把光标放在每个边界字符前面,确认边界之间的片段与卡片上的记录一致。如果某个片段不同,修改卡片而不是地址,因为地址字符串是本练习的固定参照。
列出你发现的任何差异,即使是很小的差异,比如缺少末尾斜杠或大小写不同。域名不区分大小写,但路径可能因服务器而异,所以记下你打算使用的精确大小写是值得的。这种精确复制和标注的习惯,在你以后配置真实链接或排查无法打开的URL时会很有帮助。
步骤 1
将完整示例地址复制到纯文本文档中,获得一个没有任何周围格式干扰的干净参照。
步骤 2
把光标放在每个边界字符处,为左侧或右侧的片段标注对应的部分名称:方案、域名、路径、查询或片段。
步骤 3
将每个标注好的片段与地址说明卡上的条目逐一对比。记录任何不匹配之处,无论多小,并更新卡片使其与字符串一致。
保留说明卡供以后使用
将验证过的地址说明卡存放在你已有的项目笔记工具中。一个简单的文本文件、一个笔记应用、甚至一个带有描述性标题的书签都可以。重要的是这张卡片以后容易找到,因为你在撰写页面内容、创建导航链接或向别人解释网站结构时都会回来参考它。
随着项目推进,每当你添加新页面或更改路径时就更新卡片。把卡片当作一份持续维护的文档,而不是一次性的练习。如果你决定把 /notes/first-page 改成 /notes/2024/first-page,先在卡片上做这个更改,然后在地址出现的每个地方一致地应用。这种单一来源的做法能减少网站不同部分出现不一致链接的机会。
你可能还会发现这张卡片在与协作者沟通或在论坛求助时很有用。与其粘贴一个长URL并希望对方能自行解析,不如分享拆解后的版本,把每个部分单独展示。这让别人更容易发现错误或提出改进建议,也巩固了你自己对各部分如何组合在一起的理解。
常见问题
域名和URL是同一个东西吗?
不是。域名标识你要访问的服务器或组织,而URL是包含协议、域名、路径以及可选查询字符串和片段的完整地址。每个URL都包含一个域名,但单独的域名并不指定你想要该服务器上的哪个资源。12
URL中的片段部分会发送到服务器吗?
不会。井号后面的片段标识符由浏览器用来在已加载的文档内部导航,它永远不会包含在发送给服务器的请求中。2
两个不同的URL可以指向同一个域名吗?
可以。一个域名可以托管许多不同的资源,每个资源有自己的路径。不同的查询参数或片段也能进一步区分共享相同域名和路径的URL。域名告诉你联系哪台服务器,URL的其余部分告诉你获取哪个具体资源。2