【发布时间】: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