繁体   English   中英

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

[英]Why do so many Ruby on Rails apps have missing trailing slashes?

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

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

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

你的论点是无效的:

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

这是关于斜杠的说法:

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

Rails非常符合这一指令。

我的头发是一只鸟!

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

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

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

/post/:year/:page

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

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

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

有些像斜线,有些则没有。 可以为双方提出激烈的争论。

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

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

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

要么

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM