【问题标题】:How to configure .htaccess when a rails application is located inside of another rails' public folder?当 Rails 应用程序位于另一个 Rails 的公共文件夹中时,如何配置 .htaccess?
【发布时间】:2011-06-24 14:04:09
【问题描述】:

我的共享主机服务器上运行了一个 Rails 应用程序,public_html 映射到 ~/rails_apps/app1/public。 这样做是为了www.mydomain.com 启动 app1。不出所料,.htaccess 是这样的

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ dispatch.fcgi [QSA,L]

来了一个新的rails app2,我想通过www.mydomain.com/app2访问它

我创建了~/rails_apps/app2,并创建了指向那里的符号链接public_html/app2(符号链接实际上是~/rails_apps/app1/public/app2)。

这个app2也需要dispatch.fcgi来启动,所以app2/public/.htaccess的RewriteRules和上面一样。

问题是当我访问www.mydomain.com/app2/hello 时,我的第一个app1 正在接收请求并且它失败了。我将这条规则解读为“文件 /app2/hello 不存在,将其发送到 dispatch.fcgi 进行处理”。

所以,我尝试在 app1/public 中设置附加规则

RewriteCond %{REQUEST_URI} ^/app2/.*
RewriteRule ^(.*)$ /app2/dispatch.fcgi [L]

我的 app2 现在正在收到请求,但它尝试处理 /app2/hello 失败,因为我的路由中没有定义 /app2。它只需要接收/hello

我还尝试将RewriteBase /app2 放在上一段中的规则之前,但似乎没有任何区别。我还需要将RewriteBase / 放在原来的 app1 RewriteRule 之前,否则 app1 会中断。 (说真的,不知道是不是允许多个RewriteBase)

任何想法如何解决我的问题?

【问题讨论】:

    标签: ruby-on-rails .htaccess fastcgi


    【解决方案1】:

    调整/app2路由子目录尝试添加

    config.action_controller.relative_url_root = '/app2'
    

    到您的 environmet.rb(生产)...

    希望这会有所帮助

    【讨论】:

      猜你喜欢
      • 2022-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-21
      • 2011-03-04
      • 2017-10-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多