我的共享主机服务器上运行了一个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)
任何想法如何解决我的问题?
答案 0 :(得分:0)
调整/ app2 routes子目录尝试添加
config.action_controller.relative_url_root = '/app2'
到你的environmet.rb(制作)......
希望这可以帮助