Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

URL 末尾的「/」

  以前 URL 都是以服务器上的文件作为结尾,比如 xxx.asp、xxx.php,这些都是可以真实在服务器上找到的问题。现在 URL 的玩法越来越奇怪,自从 URL 从文件系统变成纯粹的路由概念后,人们已经不知道 URL 到底是个什么了。比如 URL 末尾是否应该有「/」就是一个纠结点。
  比如我们访问 /xxx 这样一个 URL Path。如果 URL 在服务器纯粹以路由来解析,那它可能是任何东西,现在我们只扯传统的 URL。那么它可能是站点根目录下的一个名为 xxx 的文件,也可能是一个名为 xxx 的目录,并根据服务器的配置去寻找一个 index 文件。通常一个文件直接无扩展名是很奇怪的,至少 mime 无法定义。那么它最有可能的就是一个目录,于是实际请求的应该是这个目录下的 index 文件。
  但是如果直接让 /xxx 这样的 URL Path 响应目录下的 index 文件可能会出问题。因为如果 index 文件需要基于 URL 来计算相对路径,那么 /xxx 和 /xxx/index.xxx 实际上是在不同的目录中,只有使用 /xxx/ 才可以避免相对路径计算错误的问题。所以一些 http 服务器会对末尾不带「/」的目录访问响应一个 301 重定向到以「/」结尾的版本。所以我觉得对于目录访问,末尾带「/」才是正确的,不应该使用不带「/」的跳转。
  除了目录之外,如果直接访问域名呢?如果看 Chrome 的地址栏,如果只有一个域名没有路径时末尾是没有「/」的。其实 Chrome 只是觉得末尾没有其他东西,放一个「/」太难看了,所以隐藏掉。实际上请求发起时总是有「/」被发出,而且如果我们去复制 Chrome 地址栏的东西,会发现粘贴出来的 URL 是带「/」结尾的。所以我觉得根目录的末尾也需要「/」。要是能在不带「/」时自动给 301 重定向到到「/」的 URL 上那就更好了!
网名:
3.84.186.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^