codeigniter 中控制器前的自定义字符串

custom string before controller in codeigniter

我的目标是把例如USERNAME 在所有其他路由之前,如下所示:

https://my.exaple.com/USERNAME/controller/function/val1/val2

我的网站已经 运行 大约 50 条路线。 我知道我必须在 routes.php 中输入这样的内容:

$route[(:any)/controller]

但这意味着重写控制器中的所有重定向。

我不想重写它们,添加这个很小的功能。

是否可以通过某种方式动态传递此参数,这样我就不必更改所有控制器?

为了将 USERNAME 添加到 all 重定向,您可以创建自定义 url 助手,从 system/helpers/url_helper.php 中获取并修改 redirect 函数(伪代码):

if ( ! function_exists('redirect'))
{
    ...

    // Let's add here username to the start of the url
    $uri = get_instance()->user_model->get_username() . "/" . $uri;

    switch ($method)
    {
        case 'refresh':
            header('Refresh:0;url='.$uri);
            break;
        default:
            header('Location: '.$uri, TRUE, $code);
            break;
    }

    ...

}