在发布第一个网站之前,你需要把网站地址分享给别人。这个地址就是一个URL,理解它的各个组成部分能帮助你准确描述自己的网站,也能自行发现简单的拼写错误。

域名回答什么问题,完整URL回答什么问题

准备新网站时,你最先接触到的地址相关术语是域名。域名是互联网基础设施的关键部分,它为互联网上任何可用的网络服务器提供了一个人类可读的地址。计算机通过数字形式的IP地址访问服务器,但人们很难记住这些数字,而且数字可能会随时间变化。域名通过给服务器一个可读的标签来解决这个问题,例如example.org。1

URL更进一步。URL是统一资源定位符的缩写,它是互联网上某个唯一资源的地址,也是浏览器用来获取已发布资源(如HTML页面、图片或文档)的关键机制之一。域名标识的是服务器,而URL标识的是该服务器上的某个具体资源。可以这样理解:域名告诉你的是哪栋楼,完整的URL告诉你的是那栋楼里的哪个房间。2

这个区别在上线前很重要,因为你经常需要分享某个具体页面的地址,而不仅仅是域名。如果你只给别人域名,他们会落在首页上。如果你想让他们看到某篇特定的文章或设置页面,就需要完整的URL。认清地址中每个部分的作用,为本文后续内容打下实用基础。

逐部分阅读示例地址

为了让这些概念更具体,本文接下来使用一个假设地址:https://example.org/notes/first-page?view=compact#intro。这个地址纯粹是为了拆解字符串各部分而构造的,它不指向任何真实页面,你不应期望在浏览器中打开它。

第一部分是https,即方案,它指示浏览器必须使用什么协议来请求资源。对于网站来说,协议通常是HTTPS或其未加密版本HTTP。方案告诉浏览器在获取任何内容之前如何与服务器通信。下一部分是example.org,即权限部分中的域名,它标识被请求的是哪台网络服务器。权限部分通过字符组合://与方案分隔。2

域名之后是路径,在本例中是/notes/first-page,它指向网络服务器上的一个资源。路径之后,问号引入查询字符串。在本例中,view=compact是提供给网络服务器的一个键值对参数。服务器可以使用这些参数在返回资源之前做额外处理。最后,井号引入片段标识符,在本例中是intro。锚点相当于资源内部的一个书签,为浏览器提供指示,使其显示该书签位置的内容。片段标识符不会随请求发送给服务器。2

相同主机,不同路径与查询

现在每个部分都有了标签,我们可以看到只改变其中一个部分而保持其余不变时,会产生不同的地址字符串。保持方案和域名不变:https://example.org。只把路径从/notes/first-page改为/notes/second-page。结果是一个不同的URL字符串,至少从地址层面看,它指向同一台服务器上的不同位置。我们在这里观察的是字符串结构,而不是对服务器实际返回内容做断言。

接下来,保持路径不变,只改变查询字符串。把view=compact替换为view=full,地址变为https://example.org/notes/first-page?view=full。域名和路径与原来完全相同,但查询参数携带了不同的值。同样,我们只是在指出字符串不同;服务器是否区别对待它们取决于该服务器的配置,这超出了阅读地址的范围。

你也可以完全去掉查询和片段。地址https://example.org/notes/first-page仍然是一个有效的URL。查询和片段是可选部分。这个观察在你比较自己笔记中的地址时很有用:两个URL如果域名和路径相同,只在查询或片段上不同,它们指向的是同一个资源位置,只是可能呈现方式或滚动位置不同。注意到字符串本身的这些差异,就是本练习要培养的技能。

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

记录你的假设URL的目的、完整地址和每个已标注部分,写在一张卡片或一条笔记上。对于本例,目的可以写成「一个用于学习URL结构的练习页面」。完整地址是https://example.org/notes/first-page?view=compact#intro。在下方列出:方案为https,域名为example.org,路径为/notes/first-page,查询为view=compact,片段为intro。把所有内容放在一处,之后更容易发现遗漏。

为每个部分写一行简短说明,解释你为什么这样选择。例如,你可以写路径/notes/first-page是因为假设项目把内容组织在notes文件夹下。查询view=compact是为了展示参数在字符串中的样子。这些简短的理由不是技术要求,而是帮助你在几周后重新查看卡片时回忆起自己当时决策的备忘。

如果你的项目最终有多个地址,为每个地址分别做一张卡片。保持一致的格式意味着你可以并排比较两个地址,快速看出哪些部分不同。这个习惯在你为简报、README文件或给合作者的消息草拟链接时特别有用,因为你可以直接复制确切的字符串,而不是凭记忆重新拼写。

手工核对你的地址说明卡

手工核对是在公开分享地址之前发现拼写错误的简单方法。以下步骤是基于上面标注练习的作者建议,不是任何规范的要求。

标注完成后,从左到右再通读一遍卡片上的完整地址。确认方案、域名、路径、查询和片段按此顺序出现,并且分隔符符合预期:方案与权限之间是://,查询之前是问号,片段之前是井号。如果有任何位置看起来不对,在卡片上修正后重新通读。这最后一遍检查只需片刻,但往往能发现一个放错位置的斜杠或一个遗漏的问号。

检查你的卡片与你计划粘贴地址的任何消息或文档是否一致。如果你要在HTML文档中写链接,记住HTML语言广泛使用URL,例如用a元素创建链接,或用img元素显示图片。从卡片上粘贴已核对的字符串能减少在这一步引入拼写错误的机会。2

步骤 1

打开你的地址卡片,将完整URL字符串复制到纯文本编辑器或空白笔记中。不要凭记忆重新输入;使用复制粘贴,避免意外的字符变动。

步骤 2

从左开始,为每个部分标注名称。在https旁写「方案」,在example.org旁写「域名」,在/notes/first-page旁写「路径」,在view=compact旁写「查询」,在intro旁写「片段」。如果有助于看清边界,可以为每个标签使用不同的颜色或括号样式。

保留这份记录供以后使用

地址卡片核对完成后,把它存放在你之后确实会再查看的地方。项目文件夹里的纯文本文件、你常用笔记应用中的一种记录,甚至配置文件顶部的注释都可以。格式不如习惯重要。当你之后撰写文档、在邮件中分享链接或排查失效链接时,手边这份带标注的拆解能让你免于从头重新分析字符串。

随着项目发展,你可能会发现自己的记录偏好会变化。早期一张卡片对应一个地址就够了。之后你可能想增加页面标题、上次检查链接的日期或分享场景等栏目。这些都是组织层面的选择,不是技术规则。重要的是卡片仍然是你信任的参考,因为你亲手构建了它并手工核对过。

如果你与他人协作,考虑分享你的地址卡片格式,让每个人都用相同方式标注各部分。一致的标注让讨论URL的某个具体片段时更不容易产生歧义。例如,说「笔记页面的查询参数」比说「问号后面那个东西」要清晰得多。基于简单卡片建立的共同词汇能防止小误解演变为浪费时间的排查。

常见问题

URL中的片段部分会发送给服务器吗?

不会。片段标识符是井号后面的部分,它不会随请求发送给服务器。它由浏览器用来滚动到资源内部某个书签位置。2

一个URL没有查询字符串或片段还算有效吗?

算。查询和片段都是URL的可选部分。像https://example.org/notes/first-page这样的地址,即使没有查询和片段,仍然是完整且有效的。2

域名和完整URL的区别是什么?

域名用人类可读的标签标识一台网络服务器。完整URL在域名的基础上还包含方案、路径以及可选的查询或片段等部分,它指向该服务器上的一个具体资源。12