【问题标题】:CodeIgniter with multiple subdomains具有多个子域的 CodeIgniter
【发布时间】:2018-01-09 13:03:33
【问题描述】:

我有一个问题,希望我们能解决它。

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

管理面板的URL结构是这样的

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

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

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

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

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

任何人都可以解决这个问题。谢谢

【问题讨论】:

  • 这些域之间有区别吗?

标签: php codeigniter codeigniter-3


【解决方案1】:

我建议在应用的重要模型中执行一些代码,以便在整个应用中自动加载。也许称它为 Site_model.php。

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

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

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

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;

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

【讨论】:

  • 感谢您的回复。真的,我不明白您对“重要模型”的意思。请提供一个例子来帮助我。我对你很满意。谢谢
  • @WaqasKhan 我已经用一个基本示例(未经测试)更新了我的答案。可能有更好的方法,但这是一个简单的示例,它解释了执行此操作的一种方法。
猜你喜欢
  • 1970-01-01
  • 2013-02-24
  • 2012-12-25
  • 2019-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多