执行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包/ set。目前我通过多个域和子域使用它。我的CodeIgniter根据HTTP_HOST
加载相关的个人资料。我已经使它也加载相关的配置文件,以防它包含域的文件夹。问题是发生路由并将文件夹视为控制器/路由的一部分而不是base_url。
使用地址 http://domain.com/folder/admin 我希望加载控制器admin
(在controllers/
内),而不是控制器{{1} }。
在某种程度上,我想得出的结论是,在路由过程中将排除base_url的整个部分。
它与folder
类似,但基于MySQL。
答案 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
数组中读取,因此您可以随时更改它。