我正在尝试捕获产生路由错误的URL。我的最终目标是更改URL上的域以检查它是否存在于我们的旧站点(更改域),如果是,则重定向到旧站点。这就是我所做的。
unless Rails.application.config.consider_all_requests_local
rescue_from Exception, with: :render_500
rescue_from ActionController::RoutingError, with: :check_old_site
rescue_from ActionController::UnknownController, with: :render_404
rescue_from ActionController::UnknownAction, with: :render_404
rescue_from ActiveRecord::RecordNotFound, with: :render_404
end
private
def check_old_site(exception)
#Need to edit the URL but I need access to before I can write the code to modify
captured_and_modified_url = ???
case Net::HTTP.get_response(URI.parse(captured_and_modified_url))
when Net::HTTPSuccess then redirect_to captured_and_modified_url
else render_404(exception)
end
end
def render_404(exception)
@not_found_path = exception.message
respond_to do |format|
format.html { render template: 'errors/error_404', layout: 'layouts/application', status: 404 }
format.all { render nothing: true, status: 404 }
end
end
因此,对于这个问题,我只想获得404错误的URL。感谢前面的任何帮助。
答案 0 :(得分:0)
不久之前想出这个。 request.path
def check_old_site(exception)
exception_url = "http://old.richarddawkins.net#{request.path}"
case Net::HTTP.get_response(URI.parse(exception_url))
when Net::HTTPSuccess then redirect_to exception_url
else render_404(exception)
end
end