在两种不同的情况下,尾部斜线在 URL 中扮演什么实际角色?

What actual role does the trailing slash is playing int the URL in two different scenarios?

考虑第一种情况:

如果我在网络浏览器的地址栏中输入 URL https://www.w3schools.com/html,它会自动更改为 URL https://www.w3schools.com/html/,其中有一个尾部斜杠,然后加载相关网页。

为什么以及如何将尾部斜杠添加到 URL 我在网络浏览器地址栏中输入的内容?谁负责自动将尾部斜杠添加到我之前输入的 URL?

考虑第二种情况:

考虑下面的锚标记 <a> 代码:

 <a href="https://www.w3schools.com/html/">Visit our HTML tutorial</a> 

这很好用。然后,我从同一个 URL 中删除了尾部斜线并尝试了下面的锚标记 <a> 代码,但该代码不起作用:

 <a href="https://www.w3schools.com/html">Visit our HTML tutorial</a> 

为什么会这样?

为什么它没有被重定向到锚标记 src 属性中提到的 URL <a>

虽然,我不知道在网络浏览器地址栏中输入的 URL 自动添加尾部斜线背后的原因,但我的问题是为什么在第二种情况下,同样的基础没有工作,即在锚标记 <a> 中,其 href 属性中包含 URL,但不包含尾部斜线?

请有人帮助我用简单、清晰和易于理解的语言回答我的所有疑问。

谢谢。

这两个url:

在规范上是不同的 url。这意味着服务器和客户端应将它们视为 2 个不同的 url。任何客户端都不应自动添加或删除斜线,因为它们可能 return 非常不同。

但是,许多服务器和服务器框架会自动添加斜杠。他们通过 HTTP 重定向执行此操作。

例如,如果您 运行 普通的 apache,并且您从某种目录提供 index.html,默认情况下,如果 [=29],apache 将重定向到带有斜杠的 url =] 已提供。

这不是 HTTP 所要求的,也不是服务器或客户端工作所必需的。这完全是服务器实施者的选择。