【问题标题】:HTML link trailing slash [duplicate]HTML链接尾部斜杠[重复]
【发布时间】:2015-08-24 14:27:50
【问题描述】:

w3schools 文档说:

如果子文件夹地址没有尾部斜杠,您可能会向服务器生成两个请求。许多服务器会自动在地址后面添加一个斜杠,然后创建一个新请求。

目前尚不清楚这究竟意味着什么。在href url中添加斜杠有什么区别,是否有关于添加斜杠的最佳实践。

【问题讨论】:

    标签: html


    【解决方案1】:

    这是两个不同的网址:

    http://example.com/foo
    http://example.com/foo/
    

    通常但并非总是如此,请求第一个 URL 会触发服务器以 301 Permanent Redirect 回复第二个 URL。然后浏览器必须向第二个 URL 发出第二个请求。

    当 URL 映射到服务器文件系统上的目录并且正在加载 index.html(或其他目录索引)时,最常见的情况。

    动态生成内容的服务器(例如,使用像 Perl 的 Catalyst 这样的 MVC 框架)不太可能这样做。在这种情况下,您通常必须更加小心链接到的位置,因为相对 URL 的解析方式与两个 URL 不同。

    【讨论】:

    • 所以服务器决定是否返回301,那么如果我们添加一个尾随空格会有什么不同?
    • 如果您包含尾部斜杠,那么您只需转到第二个 URL。您不会尝试获取第一个 URL。您没有被告知您应该获得第二个 URL。您为自己保存一个请求和一个响应。
    【解决方案2】:

    从根本上说,http://example.com/foohttp://example.com/foo/ 是两个完全不同的 URL。最终,重要的是为这些 URL 提供服务的服务器在查询这些 URL 时将如何响应。这完全取决于服务器要做什么。 .../foo 可能会返回一个文件,而.../foo/ 可能会返回一个目录列表。或者两者都可能返回目录列表。或者一个文件。或者同一个文件。或者每次都有一个随机的新响应。

    W3S 指出的是,许多 服务器被默认配置为向以斜线结尾的规范版本返回 redirect 响应.这意味着,如果您从该服务器请求.../foo,它会将您重定向到.../foo/,然后导致您的客户端向.../foo/ 发出第二个请求。服务器为何、如何或何时发出此重定向完全取决于每个服务器,是否真的如此流行的做法值得怀疑(W3S 的一切都是如此)。

    重要的是你要把你的 URL 指向你想要指向它们的地方。 .../foo 是正确的 URL,因为它是一个文件吗?或者.../foo/ 是正确的 URL,因为它是(虚拟)目录的根?由您决定,并确保您的服务器正常运行。

    【讨论】:

    • 由于这是 HTML 文档的一部分,人们通常认为它会导致浏览器行为有所不同。
    • 基本上浏览器将../foo/和../foo视为两个不同的URL,服务器可能会也可能不会。
    • 没错。 relative URLs 与那些也有细微的差别。 bar 相对于.../foo.../barbar 相对于 .../foo/.../foo/bar。这是浏览器端的逻辑。
    猜你喜欢
    • 1970-01-01
    • 2016-01-10
    • 2012-12-09
    • 2012-07-01
    • 1970-01-01
    • 2016-10-29
    • 1970-01-01
    • 2013-02-28
    • 1970-01-01
    相关资源
    最近更新 更多