私は/thingers
に/widgets
ルートの名前を変更しています。すべてwidget
関連のURLをthinger
の対応する1行にリダイレクトすることができます。動作しませんワイルドカード照合でリダイレクト
get '/widgets(*anything)', to: redirect('/thinger%{anything}'),
as: 'widgets_redirect'
^^^:それは%2F30%2F
として通じスラッシュ渡し、ですべてのファイル拡張子を通らないような
何か。私が持っている
ザ・唯一の作業溶液は、いくつかの行にあります。
get '/widgets', to: redirect('/thingers'), as 'widgets_redirect'
get '/widgets/:id', to: redirect('/thingers/%{id}')
get '/widgets/:id/:action.:ext', to: redirect('/thingers/%{id}/%{action}.%{ext}')
get '/widgets/:id/:action', to: redirect('/thingers/%{id}/%{action}')
*編集:スワップ最後の2行は、ファイルの拡張子が一致せずにそれ以外の場合は1と間違って拡張子を持つ要求を処理します。
これらのケースをすべて1行でカバーするにはどうすればよいですか?
はなぜ '' /.*/もスラッシュが含まれていますか? – tuff
です。あなたが今ex: '/ widget/something/another.txt'のために書くリンクは、'/thingers/something/another.txt'にリダイレクトされます。 –
残念ながら、スラッシュは通過せずにURLエンコードされていますので、 '/ widgets/info.json'では'/thingers30%2Finfo.json'にリダイレクトされます。スラッシュをマッチさせることができれば、あなたのソリューションが2行必要な理由を知りたいのですが、 'redirect( '/ thingers%{thingy}')だけではないのですか? – tuff