3

为什么这么多 Ruby on Rails 应用程序的 URL 中缺少尾部斜杠?一个例子是http://basecamphq.com/tour。AFAIK 这违反了 Web 标准。这与 RoR 的设置方式有关吗?

4

7 回答 7

12

它不违反 Web 标准。http://basecamphq.com/tour被认为是一个文件,http://basecamphq.com/tour/将是一个目录(注意:两个 URL 不相等,尽管一些网络服务器 - 例如 Apache - 如果一个不存在)。由于两者都是虚拟的,主要由开发人员决定(这与使用的编程语言或框架无关)。

我认为这与缓存无关(如 nilamo 所述),因为有足够的 HTTP 标头用于缓存控制 - 可能是某些反向代理具有不同的默认行为。

于 2009-10-23T12:22:31.297 回答
5

你的论点是无效的:

w3c 的 url 规范不强制在 url 上使用斜杠。

这就是它所说的斜线:

路径的解释方式取决于所使用的方案。通常,保留的斜线“/”字符(ASCII 2F hex)表示层次结构中的级别,斜线左侧的较高级别部分。

Rails 很好地遵守了这个指令。

我的头发是一只鸟!

于 2009-10-23T13:01:18.110 回答
2

因为尾部斜杠表示一个目录,并且您在 Rails 中访问的不是目录,而是页面。就像您的示例中的 tour.html 一样,除了 .html 可以忽略,因为它是默认值。

于 2009-10-23T12:21:45.853 回答
1

我敢说,因为在 RoR 中,您键入的 URL 通常不会映射到目录中的静态文件,而是由 routes.rb 文件动态解析,以斜杠结尾的路径并没有多大意义感觉。

于 2009-10-23T12:22:26.453 回答
0

有些喜欢斜线,有些不喜欢。双方都可以进行激烈的辩论。

于 2009-10-23T12:31:39.180 回答
0

Rails 使用斜杠作为参数标记分隔符,以及类似的路由

/post/:year/:page

默认情况下匹配/post/2012/a-title/post/2012/a-title/,除非你做了一些魔术这与网络标准无关

从浏览器的角度来看,这两种路径在处理相对资源时有很大的不同。作为对上述 <img src=" image.png "/> 的响应,浏览器将向服务器发送第二个查询:/post/2012/image.png(第一种情况)或/post/2012/a- title/image.png(第二种情况),因为浏览器使用尾部斜杠来解析路径,就好像它们是目录一样。

但是,Rails 开发人员通常不在乎,因为他们在呈现内容时不会显式地编写 URL!他们可以使用 URL 帮助程序,这些帮助程序对他们隐藏了这个逻辑......除非您不使用帮助程序来生成内容,否则您会在意。

于 2012-09-11T07:24:45.517 回答
-3

这是 URL 重写的一种形式。它不违反网络标准,实际上对可用性有很大帮助,并且已被证明有助于您的搜索引擎排名。这样想吧。

您正在告诉您的朋友您在某人的博客上看到的这篇很酷的帖子。哪个 URL 更容易告诉您的朋友:

  1. http://www.coolwebsite.com/post.aspx?id=aebe6ca7-6c65-4b5c-bac8-9849faa0a467

或者

  1. http://www.coolwebsite.com/cool-ideas-for-posts/
于 2009-10-23T13:07:04.303 回答