0
是否有可能做一個「一網打盡」,在我的路線重定向規則,例如像這樣:我可以在我的路線中制定全面重定向規則嗎?
get "/foo*", to: redirect("/bar$1")
這將導致這些301:
- /富 - > /條
- /富/巴茲 - > /酒吧/巴茲
- /富/ A = b? - > /酒吧/ A = b
是否有可能做一個「一網打盡」,在我的路線重定向規則,例如像這樣:我可以在我的路線中制定全面重定向規則嗎?
get "/foo*", to: redirect("/bar$1")
這將導致這些301:
是的,你可以嗎?。下面是我做這個之前:
# 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中。同樣,如果有的話,你可以在重定向URL中有條件地包含查詢字符串參數。
沒關係,所以沒有官方的方式。感謝您分享您的解決方案! –