第一次准备网站时,地址栏里那一长串字符看起来像一整块没有分隔的文本。本文用一个假设地址把域名和完整URL区分开来,逐段标注每个可见部分,并制作一张可以反复使用的小卡片。

域名与完整URL分别回答什么问题

假设你正在筹备一个小型个人项目,想给它一个公开地址。你可以先选一个域名,比如example.org。域名为互联网上可用的服务器提供人类可读的地址。计算机通过数字IP地址定位服务器,但人们很难记住这些数字序列,也很难把它们与特定网站或服务联系起来。域名通过提供一个可读标签解决了这个问题,即使底层IP地址发生变化,标签仍然稳定。1

完整URL回答的是另一个问题。域名标识的是服务器,而URL指向该服务器上的某一个具体资源。URL是互联网上唯一资源的地址,也是浏览器用来获取已发布资源(如HTML页面、图片或样式表)的关键机制之一。理论上每个有效的URL指向一个唯一的资源,因此两个在任何部分上不同的URL可能导向不同的内容。2

本次练习使用一个假设地址:https://example.org/notes/first-page?view=compact#intro。这个字符串纯粹为了拆解各组成部分而编造,不声称指向真实页面或已上线的服务器。下文所有内容都把它当作阅读练习来对待,帮助你观察每一段如何构成整体。

在本例中逐段标出各组成部分

第一段是https,即方案。它指示浏览器请求资源时必须使用的协议。对于网站,协议通常是HTTPS或其未加密版本HTTP。在本例中,方案告诉浏览器在连接服务器时使用安全连接。2

下一段是example.org,即位于URL权限部分的域名。权限部分通过字符模式://与方案分隔。在权限部分中,域名指示正在请求哪台服务器。域名的结构从右往左阅读:最右边的部分是顶级域名,这里是org,它告诉用户该域名背后服务的一般用途。它左边的标签example是二级域名,也就是注册时你会选择的部分。这些标签合在一起构成标识服务器的主机名。12

域名之后是路径/notes/first-page。路径表示资源在服务器上的位置。在早期网络中,路径对应服务器上的物理文件位置,但如今它大多是服务器处理的抽象概念,没有实际的物理对应。在我们的假设字符串中,/notes/first-page只是告诉服务器我们想要example.org上的哪个资源。2

保持主机不变,对比不同路径与查询

问号引出查询字符串。在?之后、#之前的所有内容都是提供给服务器的参数。在https://example.org/notes/first-page?view=compact中,参数是view=compact,一个键值对,服务器可以用它来调整返回的内容。每台服务器对参数有自己的处理规则,确认某台服务器是否处理参数的唯一可靠方式是询问服务器所有者。2

井号引出片段,也叫锚点。在本例中,#intro是片段标识符。锚点相当于资源内部的一个书签,为浏览器提供方向,使其显示该书签位置的内容。值得注意的是,#之后的部分不会随请求发送到服务器,这意味着片段只影响浏览器在本地显示的内容。2

现在保持主机部分example.org不变,设想两个变体。第一个是https://example.org/notes/second-page?view=full#summary,第二个是https://example.org/about?view=compact。两者共享相同的域名和方案,但路径不同,第一个同时带有查询和片段,第二个只带查询。仅观察字符串就能判断它们是不同的资源;但这并不能告诉你服务器实际如何处理它们。这个区分很重要,因为地址的结构是你可以阅读和记录的东西,而服务器行为取决于你可能无法控制的配置。

为假设项目制作地址说明卡

记录你的假设项目的目的,用一句话概括。例如你可以写:“一个带有紧凑阅读视图的个人笔记页面。”这句话不是技术要求,只是给未来的自己一个理由,记住这个地址为什么存在。

在卡片的下一行写出完整地址:https://example.org/notes/first-page?view=compact#intro。然后列出每个部分并附上简短标签。方案:https。域名:example.org。路径:/notes/first-page。查询:view=compact。片段:intro。这个分解方式与前面各节观察到的结构一致,让你可以快速查阅,不必每次都重新通读整串字符。

标注这张卡片不能告诉你的信息。它不确认页面是否存在、服务器是否响应、查询参数是否改变了任何可见内容。卡片是阅读辅助工具,不是测试结果。保持这个界限清晰,有助于避免认为格式正确的地址就保证页面可用。

手工核对说明卡

卡片写好后,一次简短的手工核对可以在你把地址分享给别人或粘贴到链接之前发现抄写错误。

这些步骤是作者建议,用于培养准确记录的个人习惯。它们不来自任何外部规范,你可以根据自己偏好的工具做调整,无论是纯文本文件、笔记本还是电子表格单元格。

如果任何标签与原始字符串不一致,就修正卡片并从比较步骤重新开始。目标不是速度,而是确信你记录的每个字符都与你打算引用的来源一致。

步骤 1

把卡片上的完整地址复制到空白文本编辑器中。不要凭记忆重新输入,使用复制粘贴,确保你正在核对的字符串与写下的完全一致。

步骤 2

从左边开始,标出每个边界字符:方案后的冒号和双斜杠、路径开始的第一个斜杠、查询开始的问号、片段开始的井号。在每段旁边写上标签。

步骤 3

把标注好的各段与卡片条目逐一对比。检查方案拼写、域名拼写(包括顶级域名前的点)、每个路径段、参数的键和值,以及片段标识符。

保留说明卡供日后使用

把完成的卡片存放在你下次写内容、分享链接或向合作者解释项目时真正会查看的地方。项目文件夹里的纯文本文件是个不错的选择,因为它和其他文件放在一起,不依赖任何特定应用。

当你之后为同一个项目添加更多页面时,可以在卡片上增加新条目。每个新地址获得自己的一行,使用相同的一组标签。随着时间推移,卡片会成为你网站地址空间的小地图,你可以发现不一致之处,比如某个页面使用了不同的查询惯例,或者某个片段名称没有遵循你选定的模式。

这种做法的价值不在于格式本身,而在于写下你选了什么以及为什么选的习惯。如果你后来决定重命名某个路径段或删除某个查询参数,卡片会给你一份前后对照记录。你不需要任何特殊软件或特定记法,唯一的要求是记录足够清晰,几周后你仍能读懂,而不必从头推导每个决定。

常见问题

URL中井号后面的片段会发送到服务器吗?

不会。井号后面的部分也叫片段标识符,它不会随请求发送到服务器。它只告诉浏览器在已加载的资源中滚动或跳转到哪个位置。2

同一个域名下的两个不同URL能指向不同资源吗?

可以。理论上每个有效的URL指向一个唯一的资源,因此即使域名相同,改变路径、查询参数或两者都会产生不同的地址。2

上线一个简单网站之前需要了解所有URL规则吗?

不需要。URL还有一些额外的部分和规则,但它们与日常建站无关。理解方案、域名、路径、查询和片段这几个部分,就足以应对日常工作中会遇到的情况。2