如何设置两个域指向与Passenger相同的应用程序,但具有不同的Rails功能?
问题描述:
我有两个域上的Apache:domain1.tld
& domain2.tld
如何设置两个域指向与Passenger相同的应用程序,但具有不同的Rails功能?
目前我有domain1.tld
与客运工作完美,但我也需要domain2.tld
指向此相同的应用程序,但是当到达这第二个领域,这将有不同的功能(即,呼叫不同的控制器并且具有一些不同的路线)比当用户击中domain1.tld
时。
你如何在Rails中配置这个传统?
至于Apache的配置得好,我已在为domain1.tld
如下:
DocumentRoot /home/username/apps/domain1.tld/production/current/public
<Directory /home/username/apps/domain1.tld/production/current/public>
AllowOverride all
Options -MultiViews
Require all granted
</Directory>
ErrorLog /home/username/logs/domain1.tld.error.log
CustomLog /home/username/logs/domain1.tld.access.log combined
将需要domain2.tld
为Apache的配置是什么?
答
您的设置在某个时候也可能演变为拥有两个完全独立的应用程序。我会让你成为何时何地不需要的更好的评判。话虽如此,你可以实现你在Rails中使用Routing Constraints所要求的。对于例如:(请注意,这不是实现这一目标的唯一途径,但我的首选方式)
root to: 'home#index1', as: :domain1, constraints: {|req| req.host == 'domain1.tld' }
root to: 'home#index2', as: :domain2, constraints: {|req| req.host == 'domain2.tld'}
root to: 'home#index'
要添加一个新的Apache主机,一个增加了一个虚拟主机,并指向相同的公共文件夹中主要应用。因此,在这种情况下,创建与第一个配置文件中相同的所有信息,只需添加domain2.tld
作为新的虚拟主机名即可。
欣赏答案。既然你可能错过了关于'httpd' config的部分,我已经在上面澄清了我的问题,并在我的当前配置中详细说明了一些问题,并直接标注了问题的其他部分。 – ylluminate 2015-03-03 21:37:00
我不确定您是否可以在Apache级别上实现此目标。因为调用适当的控制器动作的责任属于Rails栈而不是Apache。 – 2015-03-03 21:46:32
这是一个双重问题。对于你在rails配置上的建议你是正确的,但是Apache同样需要注意'domain2.tld'。 – ylluminate 2015-03-03 21:48:36