在Apache下的子目录中配置Ruby On Rails App

Mic*_*ren 11 ruby ruby-on-rails apache2 windows-server-2003

我在windows上有apache2.2.我正在尝试同时提供subversion(/ svn)和redmine(/ redmine).我用这个配置运行svn很好:

<Location /svn>
  DAV svn
  SVNParentPath C:/svn_repository
  ...
</Location>
Run Code Online (Sandbox Code Playgroud)

这很好用 - 我的svn用户可以点击http:// mybox/svn就好了.

现在我想为rails app(RedMine)添加另一个目录:

我按照这个问题中的建议来设置一个mongrel服务器并让apache代理客户端通过它.如果我把它作为根目录,它可以正常工作 - 但是我在子目录中制作它时遇到了麻烦:

<Location /redmine>
  ProxyPass http://localhost:3000/
  ProxyPassReverse http://localhost:3000/
</Location>
Run Code Online (Sandbox Code Playgroud)

有什么建议?

Mic*_*ren 15

这是我必须改变的:

我删除了斜杠:

<Location /redmine>
  ProxyPass http://localhost:3000
  ProxyPassReverse http://localhost:3000/
</Location>
Run Code Online (Sandbox Code Playgroud)

在我的rails应用程序中:

# added to end of file C:\redmine\config\environment.rb
ActionController::AbstractRequest.relative_url_root = "/redmine"
Run Code Online (Sandbox Code Playgroud)

现在它正在运作!


我对这种方法并不完全满意 - 我遇到了一些重定向问题.这是迄今为止似乎运作良好的另一种尝试.

第二种方法似乎更好.


更新:

正如评论中所述,对于在Rails 2.3.2+上运行的最新应用程序,请使用以下代码:

config.action_controller.relative_url_root = '/redmine'
Run Code Online (Sandbox Code Playgroud)

我把它放在新additional_environment.rb文件中.

  • 它实际上是自Rails 2.3.x以来的ActionController :: Base.relative_url_root (2认同)