2

我有 apache 2.2,mod_rails 在http://localhost运行。我想在http://localhost/ railsBlog上拥有我的 rails 应用程序。所以,我所做的是,我创建了一个虚拟主机:

  服务器名称本地主机
  DocumentRoot /Library/WebServer/Documents
  RailsEnv 开发
  RailsBaseURI /railsBlog

现在,由于 URL 是http://localhost/ railsBlog,服务器将railsBlog视为我传入的控制器,这不是我想要的。所以当我去http://localhost/ railsBlog /home/index. 这不会进入我的“主”控制器和“索引”视图,因为它试图进入“ railsBlog ”控制器(不存在)和“主”视图(不存在)。

我认为解决此问题的一种方法是将 map.root 重新定义为/railsBlog,一切都会好起来的。但是怎么做?

我可以解决这个问题的另一种方法是将 config/routes.rb 修改为:

map.connect ' railsBlog /:controller/:action/:id'

但是,这意味着每次部署到不同位置时都必须更改此文件。

或者,有没有其他方法可以解决这个问题?

4

2 回答 2

4

您可以在 config/environment.rb (或特定环境文件之一)中放置这样的行

config.action_controller.relative_url_root = "/railsBlog"

您还应该将目录符号链接publc到 web 目录的根目录,例如:

ln -s /rails/railsBlog/public /webroot/

这全部来自乘客文件

于 2009-03-23T02:02:59.393 回答
1

只是添加到以前的答案......这是文档的网址:

http://www.modrails.com/documentation/Users%20guide.html#deploying_rails_to_sub_uri

此外,如果您遇到损坏的图像、CSS、资源链接的错误,这里有一些信息......

http://www.modrails.com/documentation/Users%20guide.html#sub_uri_deployment_uri_fix

基本上它说您应该始终使用 rails 辅助函数(image_tag、javascript_include_tag 和 stylesheet_link_tag),而不是手动编码 url。这些将使用您设置的子 uri 自动生成正确的 URL。

这使您可以轻松地将应用程序移动到另一个子 uri 或移出子 uri 配置,而无需更改所有引用。

这样做的一个好处是您可以使用一个虚拟服务器语句通过多个 RailsBaseURI 行来部署多个应用程序。这对于我们正在尝试构建的应用程序非常有用。

于 2009-05-20T21:26:01.783 回答