准备第一个网站时,你会同时遇到域名和完整URL这两个概念。混淆它们可能导致与协作者沟通出错,或者在配置链接时写错地址。本文用一个假设地址逐段拆解,展示每个部分的含义以及如何为自己的项目做好记录。

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

假设你正在规划一个用来整理读书笔记的小型个人网站。你听说需要一个域名,又有人在论坛上说“直接选个URL就行”。这两条建议其实指向不同的东西。域名是互联网上标识一台服务器的可读标签,它的存在是为了让人们不必记忆类似192.0.2.172这样的数字IP地址。像example.org这样的域名告诉你该访问哪台服务器,但它并没有说明你想从那台服务器上获取哪个具体页面或资源。1

完整URL回答的是一个更具体的问题:浏览器应该从该服务器上取回哪一个资源?URL包含域名,但还附加了协议、指向特定文档的路径、可选的参数以及文档内部的可选锚点等进一步指示。理论上每个有效的URL指向一个唯一的资源,不过实际中URL也可能指向已经移动或不再存在的资源。2

对于我们的读书笔记项目来说,这个区分很重要,因为你最终需要与读者分享地址、在页面中嵌入链接,也许还要配置需要精确字符串的工具。搞清楚地址中哪一部分负责什么工作,能避免你本想指向某个具体页面时却只分享了一个裸域名。

逐段阅读示例地址

为了让讨论有具体对象,本文全程使用一个假设地址:https://example.org/notes/first-page?view=compact#intro。这是一个纯粹为拆解而构造的字符串,不指向任何真实页面。把它当作标本,我们可以逐一标注每个组成部分,而不必担心页面是否真的能打开。

第一段https是方案(scheme),它告诉浏览器请求资源时应使用哪种协议;对普通网站来说通常是HTTPS或其未加密版本HTTP。方案后面跟着的://模式将方案与权限部分分隔开来。权限部分包含域名,在我们的例子中是example.org,它指明请求的是哪台服务器。2

域名之后是路径/notes/first-page。路径标识该服务器上的一个具体资源。早期它代表服务器上的物理文件位置,如今则主要是由服务器处理的抽象概念。路径之后,问号引出查询字符串view=compact。参数是提供给服务器的额外键值对,服务器可以用它们在返回资源之前做额外处理。最后,井号引出片段标识符intro,它相当于资源内部的书签,指示浏览器滚动到特定位置。片段标识符不会随请求发送给服务器。2

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

现在保持主机部分example.org不变,设想两个变体:https://example.org/notes/second-page?view=compact#intro和https://example.org/notes/first-page?view=expanded#intro。第一个变体只改了路径,从first-page变成了second-page;第二个变体只改了查询参数,从compact变成了expanded。每个变体都产生不同的字符串,浏览器会将它们视为不同的URL。2

这个观察对文档记录很重要。当你为项目记录地址时,应该注意哪个部分承载了有意义的差异。路径变化通常意味着不同的文档或网站的不同板块;查询参数变化可能改变同一文档的显示或筛选方式,但底层资源可能是同一个。仅凭字符串本身无法判断服务器实际如何处理这些参数——每台服务器对参数有自己的规则,唯一可靠的确认方式是询问服务器所有者。2

对于你的读书笔记项目,这意味着你应该尽早决定:同一篇笔记的不同视图是使用查询参数还是使用不同的路径。这个决定会影响你在内容中写链接的方式,也会影响你向别人描述页面时的说法。把理由和地址一起记录下来,可以避免日后重新打开项目时产生困惑。

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

记录一张简短的卡片,对应项目中将使用的每个地址。卡片应包含四个字段:用通俗语言写明地址的用途、完整的URL字符串、各组成部分的标注列表,以及你所做选择的备注。对于我们的假设示例,用途字段可以写“第一篇读书笔记,紧凑视图显示,锚定到引言部分”;完整地址字段放入精确字符串https://example.org/notes/first-page?view=compact#intro;组成部分字段列出方案为https、主机为example.org、路径为/notes/first-page、查询为view=compact、片段为intro。

这种卡片格式是个人组织方式的选择,不是任何标准的要求。它的价值在于迫使你明确命名每个组成部分,而不是把地址当作一整块不透明的字符。日后需要向协作者解释网站结构或排查失效链接时,已经写好的拆解能节省时间并减少错误。

如果项目增长到包含多个页面,为每个地址维护一张卡片。把它们放在同一个文档或笔记文件中,方便快速浏览。随着时间推移,这组卡片会成为你网站地址空间的简易地图,在添加新板块或重命名现有页面时非常有用。

手工核对说明卡

检查你的卡片是否与实际地址字符串一致:把URL复制到纯文本编辑器中,在每个组成部分的边界处插入换行。方案与://分隔符之后放一个换行,主机之后放一个,路径之后放一个,查询字符串之后放一个,片段之后放一个。这种视觉分隔让你容易发现遗漏的问号、多余的斜杠或拼错的参数名。

把核对结果记录在卡片每个字段旁边。如果全部匹配,写上“已验证”并注明日期。如果发现不一致,修正卡片并记下哪里出了问题。这个小习惯能捕捉那些只有在读者报告失效链接时才会暴露的拼写错误。

每次修改地址后都重复这个验证,即使看起来只是小改动,比如添加末尾斜杠或大写某个字母。许多服务器上的路径区分大小写,在你的笔记文件中看似无关紧要的变化可能指向不同的资源或产生错误。把每个字符都当作有意义的对待,能保持文档的可靠性。

保留记录供日后使用

把完成的卡片存放在你确实会回顾的位置。项目文件夹中的一个纯文本文件是不错的选择,因为它可以搜索、可以做版本管理、也可以无需特殊工具就分享给别人。有人喜欢用电子表格,有人放在项目维基的某个板块里。格式不如坚持更新重要——每次地址变化时都同步更新卡片。

撰写新内容或向他人说明网站结构时,回看卡片而不是凭记忆重新拼写地址。这能降低在链接或说明中引入细微错误的概率,也能在协作者询问某个查询参数的作用或你为什么选择特定路径结构时,提供现成的解释。

随着项目推进,这些卡片会积累成一份轻量参考,不仅记录了地址本身,还记录了背后的决策理由。这些背景信息事后很难恢复,所以在做出决定的当下就记录下来是最高效的做法。几周或几个月后回到项目的你,会受益于今天建立的这份清晰度。

常见问题

域名和URL是同一个东西吗?

不是。域名标识服务器,而URL是完整地址,还包含协议、路径以及可选的参数和片段。域名只是URL中的一个组成部分。12

井号后面的片段部分会发送给服务器吗?

不会。片段标识符不会随请求发送给服务器,它只由浏览器用来定位已加载资源中的某个位置。2

仅凭URL就能看出查询参数的作用吗?

不能可靠地判断。每台服务器对参数有自己的处理规则,字符串只能告诉你参数名和值,具体效果只有服务器所有者才能确认。2