0

/page/index を /page/ にリダイレクトしたいのですが、

get '/page/index' => redirect('/page/')

動かない。インデックスコントローラーでredirect_toを使用する必要がありますか(ページの完全なリクエスト/リロードが発生するため、避けたい)? 同様に、Rails は /page と /page/ を 2 つの異なる URL として扱うことに気付きました。どうすれば /page を /page/ にリダイレクトできますか? なので

get '/page' => redirect('/page/') 

も機能していません(無限のリダイレクトの問題が発生しています)。

4

1 に答える 1

0

ページの完全なリロードを引き起こしたくない場合は、ルートで「リダイレクト」を使用しないでください。これは単にブラウザのリダイレクトを発行するためです。これにより、Rails は 301 "Moved Permanently" を発行します。これは基本的に、「/page/index ルートがありますが、これは間違いです。もう使用しません。代わりに /page にアクセスし、二度とここに戻ってこないでください」という意味です。もしそうなら、それはあなたがやりたいことです。Passenger を使用しており、引き続き Passenger を使用する場合は、htaccess ファイルに Apache リダイレクト ルールを配置する方が効率的です。

これが問題でさえあることも奇妙に思えます。/page/index、/page、および /page/ は、すべて同じ index#index アクションを指す URL としてどのように出現したのでしょうか? このインデックス コントローラーとは何ですか? 通常は、インデックス アクションでホームページを持つ PagesController を使用します。それで:

root to: 'pages#index"

<%= root_url %>

redirect_to root_path

常に正しいパスに移動し、末尾のスラッシュなどを気にする必要はありません。

于 2013-06-09T17:13:02.493 に答える