我在上下文scala_tour
下部署了一个Rails应用程序到我的服务器。转到URL时,一切都很好。但是,如果网址被编码为scala%5ftour
(这就是SO所做的,顺便提一下),我从Rails和/或Passenger那里得到了一个错误。
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]
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
RailsBaseURI /scala_tour
PassengerPoolIdleTime 5
答案 0 :(得分:1)
有两件事情可以立刻让您在apache中使用mod_rewrite来规范化URL,或者您可以使用Rack Middleware来重写它。 Here是一个宝石,可能会为你做到这一点。
答案 1 :(得分:0)
您使用的浏览器是什么?前几天在IE / Safari中遇到了这个问题:http://wantnotechno.wordpress.com/2009/11/10/ie-gotcha-1-uri-underscores/。显然,由于旧版浏览器的旧版规范,URI中的下划线存在一些问题。