Я пытаюсь заставить Redmine (приложение Ruby on Rails) работать. Он отлично работает при запуске с ruby script/server webrick -e production, однако у меня возникают проблемы с его работой в Apache с помощью Passenger.

Доступ к http://example.com/redmine возвращает домашнюю страницу Redmine, но щелчок по любой ссылке (или даже добавление / к URL-адресу) приводит к 404. Согласно журналу Rails, возникает RoutingError. Например, при открытии страницы проектов: ActionController::RoutingError (No route matches "/projects.html" with {:method=>:get})

Каталог Redmine: /var/www/localhost/htapps/redmine. Я следил за документацией по адресу http://www.modrails.org/documentation/Users. % 20guide.html # _deploying_a_ruby_on_rails_application (раздел 3.2), поэтому есть символическая ссылка в /var/www/localhost/htdocs/redmine, указывающая на ../htapps/redmine/public, а конфигурация Apache содержит DocumentRoot /var/www/localhost/htdocs и RailsBaseURI /redmine.

Что вызывает эти ошибки RoutingErrors?

3
Zr40 15 Июн 2009 в 18:18

4 ответа

Лучший ответ

Похоже, эта проблема на самом деле была вызвана .htaccess по умолчанию, включенным в Redmine.

Redmine .htaccess переписывает каждый запрос так, чтобы он заканчивался на .html. Маршруты Redmine ожидают запросов без файлов .html.

Установка RewriteEngine на Off решила проблему для меня.

2
Zr40 22 Июн 2009 в 11:38

Даже если вам удастся запустить Redmine в suburi, у Redmine все равно будут проблемы. Некоторые страницы не будут анализироваться и отображаться правильно, если они вообще отображаются.

Этой проблеме почти год, и она предназначена для следующего второстепенного выпуска. Кстати, вышла дюжина мелких релизов, но это еще не исправлено. Режим FCGI не поддерживает под-URI.

0
iDen 17 Авг 2013 в 13:27

Если развертывание выполняется не на Sub-URI и развертывание с использованием пассажира, добавление правила RewriteRule ^(.*)$ dispatch.fcgi [QSA,L] к вашему public/.htaccess также решает проблему. Поскольку это правило IfModule - исключено из значения по умолчанию .htaccess.

Другой вариант - удалить .htaccess, если вы его не используете (например, вы можете использовать его для дополнительной аутентификации уровня с AuthType Digest и т. д.). Это не требуется при развертывании с пассажиром.

0
PAT 22 Июн 2012 в 13:16

http://ptspts.blogspot.com/2009/05/how-to-fix-railsbaseuri-sub-uri-with.html

Ручной обходной путь (в соответствии с тем, что предлагается на страницах выше) добавляет строку ниже в config / environment / production.rb:

Config.action_controller.relative_url_root = '/ redmine'

0
Corban Brook 15 Июн 2009 в 16:08