Между Passenger и Rails подчеркивания в URL, закодированные в URL, обрабатываются неправильно - PullRequest
3 голосов
/ 10 сентября 2009

У меня приложение Rails развернуто на моем сервере в контексте scala_tour. При переходе по 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

Apache conf

RailsBaseURI /scala_tour
PassengerPoolIdleTime 5

Ответы [ 2 ]

1 голос
/ 13 октября 2009

Сразу вспоминаются две вещи: вы можете использовать mod_rewrite в apache для нормализации URL-адреса или использовать Rack Middleware для его перезаписи. Здесь - это драгоценный камень, который, вероятно, поможет вам.

0 голосов
/ 23 ноября 2009

Какой браузер вы используете? Просто столкнулся с этой проблемой на днях в IE / Safari: http://wantnotechno.wordpress.com/2009/11/10/ie-gotcha-1-uri-underscores/. Очевидно, подчеркивание в URI имеет некоторые проблемы из-за устаревших спецификаций для старых браузеров.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...