在 URL 中,// 有什么用?

在 URL 中,// 有什么用?

通常,当我看到 时//,它通常跟在某些协议前缀后面,如http:ftp:。我从未见过它放在其他地方。例如,

http://www.google.com/

是一个典型的 URL。

然而,我发现以下两种语法会产生同一站点的不同版本,

http://www.weather.com/

http://www.weather.com//

我原本以为,//除协议规范之外的任何地方都是无效的。令我惊讶的是,我错了。 结尾有什么特别之处//导致同一地点出现不同版本?

编辑:

该网站上某个人肯定已经察觉了另一个链接,因为两个链接现在都指向同一个页面。

答案1

前导//是 URL 语法的一部分。万维网的发明者为那个错误道歉

真的,如果你仔细想想,它根本不需要双斜线。我本可以把它设计成不用双斜线的。——万维网发明者蒂姆·伯纳斯·李爵士


至于结尾的//,它实际上不是双斜杠。第一个斜杠将主机名与路径分开。最后一个斜杠路径。如果 Web 服务器愿意,它可以将路径/与空路径区别对待,显然 weather.com 就是这样做的。至于这是无意的还是故意的,你必须问他们。

答案2

最近,有人认为双斜线发挥一定作用。谷歌推荐(例如,为了避免意外地从安全页面调用不安全的内容)省略嵌入资源(样式表、js 等)中的协议,如下所示

<script src="//www.google.com/js/gweb/analytics/autotrack.js"></script>

因此现在很明显,这种无协议的 URL 是完全限定的 URL,而不是相对 URL(以单个斜杠开头)。

答案3

为了真正回答这个问题,原始规范给出了协议http:(或可能是ftp:,,,,,,gopher:或),然后是mailto:指示 正在使用统一资源定位器(URL)语法的主机(可选前缀为),然后是正确地址news:,以另一个开头。这是在telnet:wais:file:prospero://user:password@/RFC 1738

随着互联网的发展,http:成为主导协议,因此浏览器现在假定http://如果不存在前缀,则应该添加前缀。

答案4

我想补充一下戴维已经接受的答案:

尽管网络发明者对此表示歉意,但我认为双斜线语法发挥了重要作用:在视觉上脱颖而出。双斜线可以在没有超链接的文本中轻松区分 URL。当您看到双斜线时,您会立即想到它可以在浏览器窗口中输入,就像您认为包含的文本@可用于发送电子邮件一样。在向网络过渡的阶段,这一点尤为重要,因为那个时代的协议(ftp、telnet、gopher)有自己奇怪的概念来表示服务器地址或资源路径,很少同时表示两者。与双斜线相关的大多数问题仍然存在,因为双斜线是 URL 中最不隐晦的部分,想想端口号、百分比编码和区分大小写。但是,像 http:something.com 这样的 URL 很容易与我这里的示例:something.com 混淆。另一方面,看看 http://,它是如何像钻石一样闪耀的。双斜线一直是网络符号的重要组成部分,我相信它也加速了它的采用率,即使它是无意的。

由于 AmigaOS 使用文件路径语法,它们也可能使 AmigaOS 的工作更容易区分文件名和 URL volume:path/to/destination。:)

相关内容