Dra*_*les 7 ruby routing ruby-on-rails
好吧,我一直在用这一块撞墙砖 - 任何帮助都非常感谢!
我正在重定向旧网址,并且大多数情况下这很容易并且运行良好,例如:
match '/pages/holiday-specials/', :to => redirect( "/accommodation", :status => 301 )
Run Code Online (Sandbox Code Playgroud)
但是,我需要一个特殊的catch-all规则,需要进行一些正则表达式检查.这很好用除了我无法让它传递状态.这会重定向并执行我需要的但不会发送301状态:
match '/*:path', :to => redirect( lambda { |params| "/operator/#{/[^\d](\d+)([^\d]|$)/.match(params[:path])[1]}" }, :status => 301)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
将块移到方法括号外,如下所示:
match '/*:path', :to => redirect(:status => 301) { |params| "/operator/#{/[^\d](\d+)([^\d]|$)/.match(params[:path])[1]}" }
Run Code Online (Sandbox Code Playgroud)
或者将它分成多行:
match '/*:path', :to => redirect(:status => 301) do |params|
"/operator/#{/[^\d](\d+)([^\d]|$)/.match(params[:path])[1]}"
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1079 次 |
| 最近记录: |