我正在努力让Redmine(一个Ruby on Rails应用程序)工作。它在ruby script/server webrick -e production
启动时工作正常,但是,我在使用Passenger的Apache工作时遇到了麻烦。
访问http://example.com/redmine会返回Redmine主页,但点击任意链接(甚至向网址添加/
)都会产生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?
答案 0 :(得分:2)
看起来这个问题实际上是由Redmine附带的默认.htaccess引起的。
Redmine的.htaccess
重写每个以.html结尾的请求。 Redmine的路线预计会减少.html的请求。
将RewriteEngine
设置为Off
为我解决了这个问题。
答案 1 :(得分:0)
http://ptspts.blogspot.com/2009/05/how-to-fix-railsbaseuri-sub-uri-with.html
手动解决方法(根据上面的建议)将以下行添加到config / environments / production.rb:
config.action_controller.relative_url_root ='/ redmine'
答案 2 :(得分:0)
如果没有使用Sub-URI部署到passenger 和部署adding,则RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]
的{{1}}规则也会解决问题。该规则为public/.htaccess
- 默认为IfModule
。
另一个选项是delete .htaccess
如果您没有使用它(例如,您可能会将其用于.htaccess
等其他图层身份验证)。与乘客一起部署时not required。
答案 3 :(得分:0)
即使你设法在suburi中运行Redmine,redmine仍然会有问题。 如果完全显示,某些页面将无法正确解析和显示。
这个问题差不多有一年了,并指出下一个小版本。 Btw十几个小版本问世,但还没有修复。 FCGI mode does not support sub-URI