在路由之前通过MySQL值设置base_url

时间:2012-06-19 13:28:56

标签: php codeigniter url-routing

执行CodeIgniter是否有任何意义,我可以通过HTTP_HOST从MySQL获取数据并使用并设置检索到的base_url以便强制执行正确的路由?

当我只使用 sub.domain.com domain.com 时,我在钩子事件post_controller_constructor下运行此操作没有任何问题,但是当我希望将base_url作为 domain.com/folder / 时我就是这个问题。

我的Codeigniter已经决定加载哪个控制器,而更改base_url并没有解决它。

据我所知,我无法在钩子事件post_controller_constructor之前执行MySQL命令,我想我必须能够做到这一点,因为在路由发生之前应该设置base_url

基本上,是否有任何有效的方法可以在执行过程中重新路由,或者在路由发生之前运行mysql?

CodeIgniter Hooks

更新
好像我走错了路。

以下是该方案:

我有一个CodeIgniter包/ set。目前我通过多个域和子域使用它。我的CodeIgniter根据HTTP_HOST加载相关的个人资料。我已经使它也加载相关的配置文件,以防它包含域的文件夹。问题是发生路由并将文件夹视为控制器/路由的一部分而不是base_url。

使用地址 http://domain.com/folder/admin 我希望加载控制器admin(在controllers/内),而不是控制器{{1} }。

在某种程度上,我想得出的结论是,在路由过程中将排除base_url的整个部分。

它与folder类似,但基于MySQL。

1 个答案:

答案 0 :(得分:0)

base_url与路由无关,只与网址相关。

您可以使用pre_controller挂钩,post_controller_constructor挂钩,或在基本控制器__construct中运行它(例如MY_Controller)。

这很容易:

// Fetch base_url from database...
$this->config->set_item('base_url', $new_base_url);

base_url()等函数从CI $config数组中读取,因此您可以随时更改它。