为什么这么多Ruby on Rails应用程序缺少尾部斜杠?

时间:2009-10-23 12:15:40

标签: ruby-on-rails web-applications web-standards

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

7 个答案:

答案 0 :(得分:12)

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

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

答案 1 :(得分:5)

你的论点无效:

w3c's url spec不会在网址上强制使用结尾斜杠。

这是关于斜杠的说法:

  

路径以某种方式解释   取决于所使用的方案。   通常,保留的斜杠“/”   字符(ASCII 2F十六进制)表示a   等级结构中的等级   左边的更高级别部分   斜线。

Rails非常符合这一指令。

我的头发是一只鸟!

答案 2 :(得分:2)

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

答案 3 :(得分:1)

我想冒昧地说,因为在RoR中,您键入的URL通常不会映射到目录中的静态文件,而是由routes.rb文件动态解析,以尾随斜杠结束路径不会很有道理。

答案 4 :(得分:0)

有些像斜线,有些则没有。可以为双方提出慷慨激昂的论点。

答案 5 :(得分:0)

Rails使用斜杠作为参数标记分隔符和

之类的路径
/post/:year/:page

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

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

但是,Rails开发人员通常不关心,因为他们在呈现内容时不会显式写入URL!他们可以使用URL帮助程序来隐藏这些逻辑......除非你不使用帮助程序生成内容,否则你就会关心。

答案 6 :(得分:-3)

这是一种URL重写方式。它不符合Web标准,实际上对可用性做了很多,并且已被证明可以帮助您的搜索引擎排名。可以这样想。

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

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

    1. http://www.coolwebsite.com/cool-ideas-for-posts/