包含多个子域的CodeIgniter

时间:2018-01-09 13:03:33

标签: php codeigniter codeigniter-3

我遇到了问题,希望我们能解决它。

问题是,我正在创建一个应用程序,这个应用程序有一个“管理面板(后端)”和前端。

管理面板的网址结构如下

  

https://www.app-name.com/admin

对于前端,我有一个不同的URL结构,例如基于国家/地区。

  

https://usa.app-name.com

     

https://ca.app-name.com

     

https://uk.app-name.com

     

https://uae.app-name.com

     

https://in.app-name.com

这意味着在前端我有多个子域。所有这些子域都共享一个数据库。同时,后端也共享同一个数据库。

现在我的问题是如何像这样处理前端。

我认为可能的一个解决方案是将应用程序复制到所有子域并与单个数据库连接。管理员面板将其复制到主域。

但在这种情况下,如果我对应用程序进行了一次修改,我必须更新所有副本。我想只使用应用程序的单个副本来处理所有子域。

任何人都有解决此问题的方法。感谢

1 个答案:

答案 0 :(得分:1)

我建议在应用程序的重要模型中执行一些代码,这些代码会通过整个应用程序自动加载。也许称之为Site_model.php。

首先,让我们自动加载模型。打开config / autoload.php并将模型添加到要自动加载的模型列表中:

$autoload['model'] = array('Site_model');

现在,创建新模型调用Site_model。在模型的构造中,沿着这些行添加一些代码(这是如何获取和分配子域的值的简单基本示例。我想有更好的方法,但是对于这个例子,它会这样做):< / p>

class Site_model extends CI_Model {
   var $subDomain = '';
   function __construct() {
      $this->subDomain = array_shift((explode('.', $_SERVER['HTTP_HOST'])));

      // further code which uses the value of subDomain to fetch the correct record from the database.
   }

现在,只要您想在代码中引用子域,就可以这样简单地得到它:

echo $this->Site_model->subDomain;

这也适用于管理员后端。哦,并确保模型是第一个自动加载的模型,以防任何其他自动加载的模型初始化代码依赖于网站模型的值。