好吧,我一直在用这个把头撞在砖墙上 - 非常感谢任何帮助!
我正在重定向旧网址,在大多数情况下,这很容易且运行良好,例如:
match '/pages/holiday-specials/', :to => redirect( "/accommodation", :status => 301 )
但是,我需要一个特殊的包罗万象规则,需要做一些正则表达式检查。这很好用,除了我无法让它通过状态。这会重定向并执行我需要的操作,但不发送 301 状态:
match '/*:path', :to => redirect( lambda { |params| "/operator/#{/[^d](d+)([^d]|$)/.match(params[:path])[1]}" }, :status => 301)
有什么想法吗?
将块移到方法括号外,如下所示:
match '/*:path', :to => redirect(:status => 301) { |params| "/operator/#{/[^d](d+)([^d]|$)/.match(params[:path])[1]}" }
或将其拆分为多行:
match '/*:path', :to => redirect(:status => 301) do |params|
"/operator/#{/[^d](d+)([^d]|$)/.match(params[:path])[1]}"
end