1

私のルートファイルでは、もともとこのルートが設定されていました:

  match '/search/*tag' => 'search#search'

ここで、URL から「検索」という単語を削除します。そこで、新しいルートを追加しました:

match '/*tag' => 'search#search'

それはすべて美しく機能します。古いルートを更新して新しいルートにリダイレクトし、seo とブックマークを機能させたいと考えていました。

 match '/search/*tag' => redirect {|params| "/#{params[:tag]}"}

ただし、これは用語の複数形です。

Input url: www.fubar.com/search/work
Becomes:   www.fubar.com/works

これは何が原因で、タグの複数形を止めるにはどうすればよいですか?

関連する可能性があります: タグのリストがある場合があるため、/:tag の代わりに /*tag を使用する必要があります。すなわち www.fubar.com/work/web/video

4

2 に答える 2

1

キャッシュをクリアすると、すべてが機能したことがわかります。ブラウザは301リダイレクトを覚えています(そして私はそれを忘れて、以前の壊れたリダイレクトを提供し続けたようです。

match '/search/*tag' => redirect { |params| "/#{params[:tag]}" }
match '/*tag' => 'search#search'
于 2012-11-09T22:29:00.103 に答える
0

私がお勧めできるのは、ブロック内に Rails.logger.debug{ params.inspect } を詰め込んでリダイレクトすることだけです。それは少なくともデバッグを開始するのに役立ちます。Rails のルーティングは、ハッピー パスから外れた場合、問題が認識 (つまり、*tags の一致が複数形になっている) にあるのか、ルーティング (リダイレクトの結果が複数形になっている) にあるのかを知ると、トリッキーで脆くなることがあります。最初に見る場所になります。

于 2012-11-09T21:50:42.560 に答える