我需要为每个国家(而不仅仅是不同的语言)创建一个不同的网络应用。假设该网站列出了该国的保险解决方案。
例如,法国输入example.com的用户需要发送到http://france.example.com,而美国用户则需要转到http://us.example.com
所有网站都具有相同的显示/布局,但页面中的内容会因保险和公司在每个国家/地区不同而有所不同。
我想要的是:
在我的后端:管理多个“国家/地区版本”,我可以在其中一次性改进功能,布局等,而无需更新每个版本的代码。所有国家/地区的版本都会保持相似的状态。
:创建一个过滤器,将我在后台输入的保险项“发送”到正确的国家/地区。
这意味着,例如,描述法国保险ALpha的页面只存在于法国版本(http://france.example.com/alpha_insurance_description)中,而不存在于其他国家版本中。
我必须实施哪种架构?是否有Rails宝石可以解决这类问题? (如果不是,可能有一些网站描述如何创建这种多国网站)
答案 0 :(得分:2)
我只想使用geoIP数据(或用户首选项)找出要显示的国家/地区,并将内容存储在数据库(例如保险公司)中,并附上国家/地区代码。看来作为一家保险公司,无论如何都会有地址和邮政编码,这应该很简单。这样,内容和网站语言都可以动态设置。
对于子域,您可以将它们全部CNAME到您的主站点,并使用一小段Rack中间件(手动滚动)将请求重定向到正确的子域(如有必要)。之后,该站点将忽略子域本身,并动态地忽略服务器内容。或者,您可以在应用程序配置中使用一些代码从Rack请求中读取子域,提取国家/地区代码,并将其设置为配置变量,然后您可以使用该变量标记在显示动态内容时使用的国家/地区代码,设置语言等。
答案 1 :(得分:2)
“多租户”就是你想要的。以下两个railscast解释了两种不同的方法,以实现相同的目标。
http://railscasts.com/episodes/389-multitenancy-with-postgresql
http://railscasts.com/episodes/388-multitenancy-with-scopes
此外,您可以使用subdomain-fu进行子域处理和路由验证。