在我的本地Apache2上,我有多个应用程序。我的httpd.conf看起来像这样:
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/
RackBaseURI /app1
RackBaseURI /app2
RackBaseURI /app3
</VirtualHost>
每个应用程序的config.ru看起来都一样:
require './app'
root_dir = File.dirname(__FILE__)
set :environment, ENV['RACK_ENV'].to_sym
set :root, root_dir
set :app_file, File.join(root_dir, 'app.rb')
disable :run
run Sinatra::Application
在/ var / www /目录中,我有每个应用程序的公用文件夹的符号链接。 (app1 / public - &gt;名为app1的链接,app2 / public - &gt;名为app2的链接等)
如果我打开localhost / app1,则启动操作(获取app1的'/')
get '/' do
erb :main
end
到目前为止一切顺利,一切正常。在视图main.erb中(在get'/'aciton中加载)我正在从public / js目录中加载一些javascripts。
这就是我的问题。我必须像那样加载它们(专注于src =“/ app1 /....."):
<script type="text/JavaScript" src="/app1/js/jquery.js"></script>
虽然我想像那样加载它们:
<script type="text/JavaScript" src="/js/jquery.js"></script>
原因是当我在e.q上上传我的应用程序时Heorku它不再工作,直到我从我的代码中删除每个“/ app1”。
总而言之,在localhost上我的Sinatra app1以localhost / root身份获取,虽然真正的root应该是localhost / app1 /。另一方面,在heroku上,它需要app1.heroku.com/作为root,这是可以的。
所以问题是如何让我的每个应用程序都将localhost / appX /作为root用户?
编辑:
此问题还涉及javascripts :( / app1 / some_action) 在localhost上它必须是这样的:
$(document).ready(function(){
$("#a_button").click(function(){
$("#some_div").load("/app1/some_action");
});
});
在服务器上,它必须是这样的:
$(document).ready(function(){
$("#a_button").click(function(){
$("#some_div").load("/some_action");
});
});