是否可以在我的路线中制作“全部捕捉”重定向规则,例如:
get "/foo*", to: redirect("/bar$1")
这将导致这些301:
答案 0 :(得分:0)
是的,你可以。以下是我之前做过的事情:
# config/routes.rb
def get_params_blob_if_present(params)
"/#{params[:a]}" if params[:a].present?
end
def get_query_string_params_if_present(params, options = {})
params = params.except(:a) # Don't include blob params
"?#{params.to_query}" if params.any?
end
MyApp::Application.routes.draw do
# ...
get '/foo(/*a)', to: redirect { |params, request| "/foo#{get_params_blob_if_present(params)}#{get_query_string_params_if_present(request.params)}" }
# ...
end
基本上,(/*a)
设置名为a
的blob。然后,您可以在重定向URL中有条件地包含此blob中的参数(如果存在)。同样,您可以有条件地在重定向URL中包含查询字符串参数(如果存在)。