class RerouteMiddleware def initialize(app) @app = app end def call(env) #Rails.logger.debug env.to_yaml return @app.call(env) if env['REQUEST_URI'] =~ /^\/admin/ env['REQUEST_URI'] =~ /^\/([0-9a-zA-Z\-_\/]*)/ parsed_entry_name = $1 entry = Item.first(:conditions => {:full_name => parsed_entry_name} ) if entry case entry.type.to_s when 'Component' env['REQUEST_URI'] = env['REQUEST_URI'].sub!(parsed_entry_name, entry.engine_name) env['QUERY_STRING'] = (env['QUERY_STRING'].blank?)? "entry_name=#{parsed_entry_name}" : "entry_name=#{parsed_entry_name}&#{env['QUERY_STRING']}" when 'Link' return [301, {'Location' => entry.url }, ['See Ya!']] end end @app.call(env) end end