簡體   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