5

最近、ウェブサイトの製品名を「ブレスレット」から「リストバンド」に変更したため、SEO の目的で古いルートを維持する必要があります。

基本的に、これらのルート

www.hostname.com/products/bracelets/series-1/
www.hostname.com/products/bracelets/series-1/small-purple

にルーティングする必要があります

www.hostname.com/products/wristbands/series-1/
www.hostname.com/products/wristbands/series-1/small-purple

ここでチュートリアルを読んでいますhttp://guides.rubyonrails.org/routing.html#redirection、ブロック構文を使用するように見えますが、ルートを適切に行う方法はまだわかりません。ルートファイルについてももっと知りたいと思っているので、どんな情報でも素晴らしいでしょう。前もって感謝します

match "/bracelets/:name" => redirect {|params| "/wristbands/#{params[:name]}" }

編集:

OK、私はそれで少し遊んでいます。これが私が試したものでどのように機能するかです

match "/products/bracelets/:name/:name2" => redirect {|params| "/products/wristbands/#{params[:name].pluralize}/#{params[:name2].pluralize}" }

入力 URL: localhost:3000/products/bracelets/series-1/small-purple

出力 URL: localhost:3000/products/wristbands
エラー メッセージ: 無効な製品: series-1
(したがって、一致は機能しましたが、リダイレクトは機能しませんでした)

次のようにパラメーターを検査するように一致を変更すると:

match "/products/balance-bracelets/:name/:name2" => redirect {|params| "/products/wristbands/#{params.inspect}" }

私は以下を取得します:

 /products/wristbands/{:name=>"series-1", :name2=>"small-purple"}

そのため、2 番目のスラッシュ「/」などを認識していないようです。何か案は?

4

2 に答える 2

10

私は同じ状況にあり、それは私のために働きます:

match "/products/bracelets/:name/:name2" => redirect {|params, request| "/products/wristbands/#{params[:name].pluralize}/#{params[:name2].pluralize}" }

私は2つのagrumentsをブロックに渡しました。

于 2012-10-16T05:30:20.627 に答える
4

Rails 5 でこれを行うことができます。

match '/products/bracelets/:name/:name2', to: "/products/wristbands/%{name}/%{name2}"
于 2017-04-28T00:10:55.240 に答える