当rails应用程序位于另一个rails的公用文件夹内时,如何配置.htaccess?

时间:2011-02-10 02:54:04

标签: ruby-on-rails .htaccess fastcgi

我的共享主机服务器上运行了一个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)

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

1 个答案:

答案 0 :(得分:0)

调整/ app2 routes子目录尝试添加

config.action_controller.relative_url_root = '/app2'

到你的environmet.rb(制作)......

希望这可以帮助