在两种不同的情况下,尾部斜线在 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 所要求的,也不是服务器或客户端工作所必需的。这完全是服务器实施者的选择。
考虑第一种情况:
如果我在网络浏览器的地址栏中输入 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 所要求的,也不是服务器或客户端工作所必需的。这完全是服务器实施者的选择。