Codeigniter 在CI中配置路由以接受n级url

Codeigniter 在CI中配置路由以接受n级url,codeigniter,routes,Codeigniter,Routes,我有一个网站,是完全动态的,它创建菜单,网页从后端的一切动态。 现在让我向您展示创建URL的顺序: http://localhost/occ/level1/level2/....leveln 基本上是一级、二级,。。。leveln是特定菜单的级别层次结构,例如主页/联系人部分/联系人现在管理员可以创建多个页面,也可以创建他想要的任意级别的菜单,因此URL逻辑是什么,它将从父级一直跟踪到最上层的父级,并返回URL,URL的末尾将是我传递给通用控制器的名称,它基本上采用名称运行db查询获取所有数据

我有一个网站,是完全动态的,它创建菜单,网页从后端的一切动态。 现在让我向您展示创建URL的顺序:

http://localhost/occ/level1/level2/....leveln
基本上是一级、二级,。。。leveln是特定菜单的级别层次结构,例如主页/联系人部分/联系人现在管理员可以创建多个页面,也可以创建他想要的任意级别的菜单,因此URL逻辑是什么,它将从父级一直跟踪到最上层的父级,并返回URL,URL的末尾将是我传递给通用控制器的名称,它基本上采用名称运行db查询获取所有数据,然后显示页面此处是我的路线:

$route['default_controller'] = 'Home';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
$route['Admin'] = 'Admin';
//$route['(:any)'] = 'Home/pages/$1';
$route['(:any)/(:any)'] = 'Home/pages/$1/$2';
//$route['(:any)/(:any)'] = 'Home/pages/$1';
现在,上述路线有两个问题:

假设我的URL有两个级别,因此路由$route[':any/:any']='Home/pages/$1/$2';将被调用现在页面控制器接受一个名称并显示页面在我的情况下,它总是返回名字,或者你可以说$1,而我希望URL中的姓氏被发送到控制器。 我们怎样才能使它通用?就像我可以在URL中用斜杠分隔n个级别的名称一样,如何配置我的路由以接受所有URL,并将URL的姓氏传递给控制器。因为当前它显示了未找到的页面,如果我在路由中定义了其他级别的URL!
如果您使用的是ci 3,则可以使用like

application/config/routes.php

//http://localhost/occ/level1/level2/....leveln
$route['(.+)'] = function ( $param ) {
                     $params = implode(",", explode('/', $param));

                     if( $params[0] === 'Admin'){
                         $return = 'Admin/';
                     }
                     else{
                         $return = 'Home/pages/';
                     }

                     return $return . $params;
                 }
application/config/Home.php

public function pages ( $params ) {
    $str = explode(',', $params);

    //now you can manipulate all params
    $str[0];//param_1
    $str[1];//param_2
    $str[n];//param_n
}

是的,我使用的是C.i 3.X,我接收到内爆传递的无效参数更改此$params=in爆,,$param;to$params=计数$param>1?内爆,,$param:$params;是的,我在$params=内爆之前忘记了这部分。。。添加$param=分解“/”,$param;然后$params=内爆…嘿,如果你能回答最后一个问题的话!我想做的是为管理员有一个单独的接口,现在所有的要求有关管理员/。。。应该重定向到特定的管理控制器方法,但现在它与我们上面所做的路由混合在一起