我在上下文scala_tour下将Rails应用程序部署到了服务器。转到URL时,一切正常。但是,如果url编码为scala%5ftour(顺便说一句,SO就是这样做的),我会从Rails和/或Passenger中收到错误消息。

乘客似乎可以识别该URL并将其交给我的Rails应用,但是Rails应用抱怨:

ActionController::RoutingError (No route matches "/scala%5Ftour" with {:method=>:get}):


这很奇怪。

除了将重定向放入Apache并将应用程序部署到其他上下文之外,我该如何处理呢?

版本号

# yum list installed | grep http
httpd.i386                               2.2.10-2.el5.eapps     installed
# yum list installed | grep passen
passenger.i386                           2.2.2-1eapps           installed
# gem list | grep rails
rails (2.3.2, 2.2.2)
# ruby -v
ruby 1.8.6 (2008-06-20 patchlevel 230) [i386-linux]


routes.rb

ActionController::Routing::Routes.draw do |map|
  map.resources :wiki_pages do |wiki_map|
    wiki_map.history 'history', :controller => 'wiki_pages', :action => 'history', :method => 'GET'
    wiki_map.version 'version/:sha1', :controller => 'wiki_pages', :action => 'version', :method => 'GET'
  end
  map.history '/history.:format', :controller => 'wiki_pages', :action => 'wiki_history', :method => 'get'
  map.resources :diagrams, :only => [:index,:new,:destroy,:edit,:show]
  map.logout '/logout', :controller => 'sessions', :action => 'destroy'
  map.login '/login', :controller => 'sessions', :action => 'new'
  map.resources :users
  map.resource :session
  map.root :controller => 'wiki_pages', :action => 'show', :id => 'MainPage'
end


阿帕奇conf

RailsBaseURI /scala_tour
PassengerPoolIdleTime 5

最佳答案

立即想到两件事,您可以在apache中使用mod_rewrite标准化URL,也可以使用Rack Middleware重写它。 Here是一颗宝石,可能会帮您解决问题。

关于ruby-on-rails - 在Passenger和Rails之间,未正确处理url中的url编码下划线,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1406842/

10-11 22:08
查看更多