在发布任何内容之前,了解网站地址各部分的作用很有帮助。本文用一个假设的URL来说明域名与完整URL的区别,然后展示一种记录和核对各部分的实用方法。

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

假设你正在规划一个小型个人项目站点,想弄清楚用户在浏览器里输入的地址到底由什么组成。首先要注意的是,域名和完整URL回答的是两个不同的问题。域名标识的是互联网上的哪台服务器。域名提供了人类可读的地址,因为IP地址难以记忆且可能随时间变化。而完整URL标识的是该服务器上的某个具体资源。URL是互联网上唯一资源的地址,也是浏览器用来获取HTML页面、CSS文档、图片等已发布资源的关键机制之一。12

可以这样理解:域名相当于一栋建筑的名称,而完整URL则是建筑名称加上楼层号、房间号,甚至标注了该走到哪张桌子前。在我们的假设练习中,将使用地址 https://example.org/notes/first-page?view=compact#intro 。这个地址并不指向一个真实存在或已上线的页面,它纯粹是一个供我们拆解的字符串,用来理解每一段的含义。

明确这一区分之后,下文将逐一标出示例地址的各个部分,对比几种变体,最后展示一种简单的记录方法,方便你在搭建或描述自己的站点时随时查阅。

标出示例地址的各个部分

下面逐段拆解 https://example.org/notes/first-page?view=compact#intro 。第一部分 https 是协议方案,它指示浏览器请求资源时应当使用的协议,网站通常使用HTTPS或HTTP。接下来是 example.org,这是域名,构成地址的主机部分,表明请求的是哪台网络服务器。2

域名之后是路径,在本例中为 /notes/first-page。路径指向网络服务器上的某个资源。在早期,这样的路径代表服务器上的物理文件位置,而如今它大多是服务器处理的一种抽象,并不对应真实的物理文件。路径之后的问号引出查询字符串,本例中查询为 view=compact。参数是提供给网络服务器的额外键值对,服务器可以利用它们在返回资源之前做额外处理。2

最后,井号引出片段标识符,本例中为 intro。片段相当于资源内部的一个书签,为浏览器指明应显示文档中哪个位置的内容。值得注意的是,片段标识符不会随请求发送到服务器。因此问号标志着查询的开始,井号标志着片段的开始,这两个标点符号就是URL末尾三个部分之间的分界。2

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

现在保持协议方案和主机不变,只改变它们后面的内容。如果写成 https://example.org/notes/second-page ,域名仍然是 example.org,但路径指向了不同的资源。如果写成 https://example.org/notes/first-page?view=full ,路径不变,但查询值从 compact 变成了 full。每种情况下字符串本身都不同,而这种不同正是在地址层面需要关注的。

我们并不对服务器实际会返回什么内容做任何断言。这里唯一的要点是URL的每一段都承担不同的角色:路径命名资源,查询添加可选参数,片段指向返回文档中的某个位置。改变其中任何一段都会产生不同的URL字符串,即使域名完全相同。

这一观察在规划新站点的内容结构时很有用。你可以列出几个共享同一域名但路径或查询不同的地址,用这些草图来思考页面之间的关系。这个练习不需要服务器存在,你只是在操作字符串本身。

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

记录以下信息到一张卡片或笔记中,适用于你计划使用的任何地址。先用一句话写明页面用途,再写出完整URL,然后在下方逐一列出各部分及其标签:协议方案、主机、路径、查询和片段。对于我们的假设示例,卡片内容为:用途是笔记第一页的紧凑视图;完整地址是 https://example.org/notes/first-page?view=compact#intro ;协议方案是 https;主机是 example.org;路径是 /notes/first-page;查询是 view=compact;片段是 intro。

这张卡片是个人参考工具,不需要遵循任何官方格式。它的价值在于把每一部分都明确写出来,这样以后在HTML文档中编写链接或与协作者分享地址时,你可以逐段核对而不必凭记忆猜测。

如果你的项目有多个页面,就为每个地址做一张卡片。你可能会发现有些页面共享相同的主机和路径,只在查询或片段上有所不同。把它们并排写出来,差异一目了然,也减少了混淆两个相似地址的可能。

通过手工复制与逐项标注核对说明卡

标注卡片写好后,将完整URL复制到一个纯文本编辑器中,直接在文本里标注每一部分。在协议方案下方放一个括号或注释,在主机下方再放一个,依此类推。这个手工步骤能发现一些容易忽略的小错误,比如缺少斜杠或问号位置放错。

检查问号是否出现在查询之前,井号是否出现在片段之前。如果这两个符号缺失或位置不对,浏览器对字符串的解读就会与你的意图不同。例如,如果不小心把 #intro 写在 ?view=compact 前面,浏览器会把井号后面的所有内容都当作片段,查询就永远不会发送到服务器。

检查第二份URL副本,逐字符与卡片上的内容对比。如果两者一致,说明卡片准确无误;如果有差异,修正卡片后重新核对。这一步只需片刻,却能防止以后将地址粘贴到导航菜单、文档或发给协作者的消息时出现混乱。

步骤 1

将卡片上的完整URL复制到一个空白的纯文本文件中。

步骤 2

在复制的字符串下方直接标注各段:协议方案、主机、路径、查询、片段。

步骤 3

将标注后的副本与原始卡片逐项对比,修正任何不一致之处。

保留记录供后续写作与沟通使用

将地址说明卡存放在你日常使用的项目笔记系统中。一个简单的文本文件、一行电子表格或一个笔记应用都可以。重要的是记录放在你真正会在需要写链接、向别人描述页面或排查地址加载异常时去查看的地方。

之后编写HTML链接或在文档中分享地址时,可以回查卡片而不是凭记忆重新拼凑URL。当站点有多个路径相似的页面时,这一点尤其有用,因为卡片让区分各地址的段落一目了然。

随着时间推移,你可能会增加或删除页面。在项目演进过程中更新卡片。一套最新的地址说明卡能让你快速了解站点结构,也更容易向任何询问的人解释这个结构。

常见问题

example.org 是一个可以访问的真实网站吗?

不是。本文中 example.org 仅作为假设的主机名来演示URL各部分的标注方法。页面 https://example.org/notes/first-page?view=compact#intro 并不存在,也没有上线发布。

URL中查询和片段有什么区别?

查询跟在问号后面,由发送给服务器的键值对组成。片段跟在井号后面,相当于返回文档内部的书签,它永远不会随请求发送到服务器。2

上线一个简单站点之前,需要理解URL的每一个部分吗?

对于基础站点来说,了解协议方案、主机和路径通常就足够编写和分享链接了。查询和片段在页面接受参数或使用页内锚点时才会用到,可以在需要时再学习。