第一次准备网站时,地址栏里那串字符其实由好几个功能不同的部分组成。弄清每部分的作用,能帮你准确描述自己的站点、发现链接中的笔误,并在与协作者沟通时减少歧义。
域名与完整URL分别回答什么问题
假设你正在规划一个小型个人项目,随手写下地址 https://example.org/notes/first-page?view=compact#intro 作为讨论用的占位示例。这个地址并不指向互联网上真实存在的页面,它在这里的唯一用途是让我们把各组成部分逐一拆开,看看每一段对整个字符串做了什么贡献。
域名回答的是「要联系哪台服务器」这个问题。域名是互联网基础设施的关键部分,它为互联网上任何可用的网络服务器提供了一个人类可读的地址,因为IP地址难以记忆且可能随时间变化。在本例中,域名部分是 example.org,它告诉浏览器该联系哪台机器,但并没有说明你要找的是那台机器上的哪个具体文件或页面。1
完整URL比单独的域名提供了更多信息。URL是互联网上唯一资源的地址,也是浏览器用来获取已发布资源(如HTML页面、CSS文档和图片等)的关键机制之一。本例中的完整字符串不仅告诉浏览器该联系哪台服务器,还指明了要请求哪个具体资源,以及加载后如何呈现它。2
在本例中标出各组成部分
第一个组成部分是协议方案,本例中为 https。协议方案指明浏览器请求资源时必须使用的协议,对于网站来说通常是HTTPS或其未加密版本HTTP。紧跟在协议方案之后的是权限部分,以 :// 这个字符模式与协议方案分隔。本例中权限部分是 example.org,它标示被请求的网络服务器。2
权限部分之后是路径 /notes/first-page,它表示资源在网络服务器上的位置。路径之后,问号引出查询字符串 view=compact。参数是提供给网络服务器的额外信息,以键值对的形式组织。最后,井号引出片段标识符 intro,它相当于资源内部的一个书签,为浏览器指明应显示该书签位置处的内容。2
阅读任何地址时,有两个标点符号尤其值得注意。问号始终标志查询部分的开始,井号始终标志片段的开始。问号与井号之间的所有内容属于查询,井号之后的所有内容属于片段。如果某个标点符号不存在,对应的部分在该地址中就不存在。2
保持主机不变,对比不同路径和查询
现在保持主机 example.org 不变,只改动字符串的其他部分。如果把路径改为 /notes/second-page,你指向的就是同一台服务器上的另一个资源。域名没有变化,浏览器仍然联系同一台机器,但请求的资源不同了。这是单个站点在一个域名下提供许多不同页面的最常见方式。2
如果把查询 view=compact 替换为 view=full,字符串又发生了变化。查询为网络服务器提供额外参数,而每台服务器对参数的处理规则各不相同。我们可以观察到文本不同,但不应在没有询问服务器所有者的情况下假设服务器会如何处理这些参数。确认某台特定服务器是否处理参数的唯一可靠方式,是向该服务器的所有者询问。2
完全去掉片段也会改变字符串。没有 #intro 时,浏览器没有指令滚动到文档内的特定位置。值得注意的是,井号之后的部分即片段标识符,永远不会随请求发送给服务器。片段只影响浏览器在加载资源之后的显示方式,因此修改或删除它不会改变服务器返回的内容。2
为假设项目制作地址说明卡
记录你的假设项目的简短说明卡。用一句话写下页面的用途,然后写出完整地址,再在下方逐项列出每个部分及其标签。以本例为例,说明卡可以写成:用途:以紧凑视图展示第一篇笔记。完整地址:https://example.org/notes/first-page?view=compact#intro。协议方案:https。域名:example.org。路径:/notes/first-page。查询:view=compact。片段:intro。
这张说明卡是一份个人参考工具,可以放在纯文本文件或项目文件夹中的笔记里。它能帮你向协作者解释站点结构,检查即将分享的链接是否包含你预期的各部分,或者在中断后回到项目时提醒自己每个地址原本的用途。不需要任何特殊软件。
当你后续为项目添加更多页面时,可以在说明卡上追加新行。每个新地址占一行,使用相同的标签集合。随着时间推移,这张卡会变成项目所用全部地址的快速索引,比起在长长的书签列表中翻找,更容易发现不一致或重复的路径。
手工核对说明卡
检查每个标签是否与原始字符串一致,确认无误后再将说明卡视为已核对。如果某个部分不匹配,修改说明卡而不是字符串本身,因为字符串代表你实际打算使用的地址。这个手工过程每个地址只需片刻,却能捕捉到凭记忆工作时容易忽略的笔误、遗漏的斜杠或错位的标点。
把核对过的说明卡作为唯一事实来源,每当你需要把地址粘贴到文档、邮件或配置文件中时,从说明卡复制而不是凭记忆重新输入。这样可以减少引入小错误的概率,而一个小错误就可能改变地址的含义。
如果发现说明卡与实际字符串不一致,先判断哪一个反映了你的真实意图。如果字符串是你真正想要的,就更新说明卡。如果说明卡反映了你的意图而字符串有笔误,就修正字符串并重新核对。无论哪种情况,在把地址分享给他人之前,都要保持两者一致。
步骤 1
从说明卡中复制完整地址到一个空白文本编辑器,以便在没有格式干扰的环境下操作。
步骤 2
从左侧开始,标出 :// 模式之前的所有内容,将其标记为协议方案。
步骤 3
标出 :// 与紧随其后的第一个单独斜杠之间的文本,将其标记为域名。
步骤 4
标出从该斜杠到问号之间的所有内容;如果没有问号,则标出到字符串末尾为止的内容,将其标记为路径。
保留说明供以后使用
把核对过的说明卡存放在你自然会经常查看的位置,比如项目的自述文件或专门的笔记文件夹。说明卡的价值会随时间增长:当你需要更新链接、添加新页面或向他人解释站点结构时,每个地址已经被拆成带标签的各部分,省去了从头分析字符串的麻烦。
你可以选择只保留当前有效的地址,也可以把尚未发布的计划地址一并列入。两种方式都可行,只要你标明哪些条目已上线、哪些仍属假设即可。这个区分能防止协作者试图访问一个只存在于你规划笔记中的地址时产生困惑。
随着项目演进,定期回顾说明卡,删除过时的条目并补充新的。一份反映站点当前状态的说明卡,远比一份仍然列着数月前已删除页面的旧卡有用得多。保持更新的习惯几乎不费什么力气,却能在排查失效链接或新成员加入时带来明显回报。
常见问题
域名和URL是同一个东西吗?
不是。像 example.org 这样的域名标识的是你要联系的服务器,而像 https://example.org/notes/first-page?view=compact#intro 这样的完整URL还指定了具体资源、参数以及资源内的位置。域名是完整URL字符串中的一个组成部分。12
井号后面的片段部分会发送给服务器吗?
不会。片段标识符永远不会随请求发送给服务器。它只告诉浏览器在已加载的文档中滚动或跳转到哪个位置,因此修改或删除片段不会影响服务器返回的内容。2
在浏览器中输入地址时需要写协议部分吗?
实际操作中,如果省略协议方案,浏览器通常会默认使用HTTP或HTTPS,所以一般只输入域名和路径即可。不过,当你在文档中记录地址或分享给他人时,写上完整的协议方案能让地址含义毫无歧义。2