这并不违反Web标准。http://basecamphq.com/tour被视为文件,http://basecamphq.com/tour/则是目录(注意:虽然一些Web服务器 - 如Apache - 如果一个不存在会检查另一个)。由于两者都是虚拟的,这主要取决于开发人员决定(这与所用的编程语言或框架无关)。
我认为这与缓存无关(如nilamo所提到的),因为有足够的HTTP头来进行缓存控制 - 但也可能一些反向代理有不同的默认行为。
你的论点是无效的:
w3c的url规范不强制要求在url末尾添加斜杠。
以下是该规范对斜杠的说明:
路径的解释取决于所使用的协议。一般来说,保留的斜杠“/”字符(ASCII 2F hex)表示层次结构中的一级,左边是更高级别的部分。
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重写形式。它不违反网络标准,实际上对可用性有很大帮助,并已被证明有助于提高搜索引擎排名。以这种方式思考。
您正在告诉朋友某个博客上的很棒的帖子。哪个URL更容易告诉你的朋友:
或者