多くの Ruby on Rails アプリで、URL の末尾にスラッシュがないのはなぜですか? 一例はhttp://basecamphq.com/tourです。私の知る限り、これは Web 標準に反します。RoR の設定方法と関係がありますか?
7 に答える
Web 標準に反するものではありません。http://basecamphq.com/tourはファイルと見なされ、http ://basecamphq.com/tour/ はディレクトリと見なされます (注: 両方の URL は同じではありませんが、Apache などの一部の Web サーバーは、 1つは存在しません)。どちらも一種の仮想であるため、主に開発者が決定する必要があります (これは、使用されているプログラミング言語やフレームワークとは無関係です)。
キャッシュ制御に十分なHTTPヘッダーがあるため、キャッシングとは関係がないと思います(ニラモが言及)-ただし、一部のリバースプロキシはデフォルトの動作が異なる可能性があります。
あなたの議論は無効です:
w3cのURL仕様は、URLに末尾のスラッシュを強制しません。
これはスラッシュについてそれが言うことです:
パスは、使用されているスキームに応じた方法で解釈されます。一般に、予約済みのスラッシュ「/」文字(ASCII 2F hex)は、階層構造のレベルを示します。スラッシュの左側の上位レベルの部分です。
Railsはこの指令に非常によく準拠しています。
私の髪は鳥です!
末尾のスラッシュはディレクトリを表し、Rails のディレクトリではなくページにアクセスしているためです。あなたの例では tour.html に似ていますが、.html はデフォルトであるため無視できます。
RoR では、入力する URL は通常、ディレクトリ内の静的ファイルにマップされず、routes.rb ファイルによって動的に解決されるため、パスの末尾にスラッシュを付けてもあまり意味がありません。検出。
Rails はスラッシュをパラメータ トークン セパレータとして使用し、次のようなルートを使用します。
/post/:year/:page
何らかの魔法を使わない限り、デフォルトで/post/2012/a-titleと/post/2012/a-title/ の両方に一致します。これは Web 標準とは何の関係もありません。
ブラウザーの観点から見ると、これら 2 つのパスは、相対的なリソースを扱う場合に大きく異なります。<img src=" image.png "/> を使用した上記への応答で、ブラウザは次のクエリをサーバーに送信します: /post/2012/image.png (最初のケース) または/post/2012/a- title/image.png (2 番目のケース)。これは、ブラウザーが末尾のスラッシュを使用して、パスがディレクトリであるかのように解決されるためです。
ただし、Rails 開発者は通常、コンテンツをレンダリングするときに URL を明示的に記述しないため、気にしません。彼らは、このロジックを彼らから隠す URL ヘルパーを自由に使用できます...ヘルパーを使用してコンテンツを生成しない限り、あなたは気にします。
スラッシュが好きな人もいれば、嫌いな人もいます。双方にとって熱烈な議論をすることができます。
これは、URL書き換えの形式です。これはWeb標準に反するものではなく、実際には使いやすさのために多くのことを行い、検索エンジンのランキングに役立つことが証明されています。このように考えてください。
あなたは誰かのブログで見たこのクールな投稿について友達に話している。友達にわかりやすいURLはどれですか。
また