1

我需要为每个国家创建一个不同的网络应用程序(不仅是不同的语言)。假设该网站列出了该国的保险解决方案。

例如,法国用户输入 example.com 需要被发送到http://france.example.com,美国用户需要访问http://us.example.com

所有网站都将具有相同的显示/布局,但页面中的内容会有所不同,因为每个国家/地区的保险公司和公司都不相同。

我想要的是:

  • 在我的后端:管理多个“国家版本”,我可以在其中一次改进功能、布局等,而无需更新每个版本的代码。所有国家/地区版本都会以这种方式保持相似的状态。

  • 在后端:创建一个过滤器,将我在后台输入的保险项目“发送”到正确的国家/地区-wesbite。

例如,这意味着描述法国保险 ALpha 的页面仅存在于法国版本 ( http://france.example.com/alpha_insurance_description ) 中,而不存在于其他国家/地区版本中。

我必须实现什么样的架构?是否有解决此类问题的 Rails 宝石?(如果不是一些描述如何创建这种多国网站的网站)

4

2 回答 2

2

I would just use the geoIP data (or user preferences) to find out which country to show and have the content stored in the DB (e.g. insurance companies) with a country code. Seeing as an insurance company will have an address and postcode anyway, this should be pretty simple. That way, both the content and the site language can be set dynamically.

As for the subdomains, you can CNAME all of them to your main site and use a little piece of Rack middleware (hand rolled) to redirect requests to the right subdomain if necessary. After that, the site ignores the subdomain itself and just server content dynamically. Alternatively, you could have some code in the application config that reads the subdomain from the Rack request, extracts the country code, and sets it as a config variable that you then use to flag what country code to use when showing the dynamica content, setting the language, etc.

于 2013-04-22T09:25:22.473 回答
2

“多租户”是您想要的。以下两个 railscasts 解释了实现相同目的的两种不同方法。

http://railscasts.com/episodes/389-multitenancy-with-postgresql

http://railscasts.com/episodes/388-multitenancy-with-scopes

您还可以使用subdomain-fu进行子域处理和路由验证。

于 2013-04-22T09:29:50.387 回答