CodeIgniter路由 - 仅从一个类的URL中删除一个类名

时间:2013-07-19 15:16:33

标签: php codeigniter class

我想重新映射一下:index.php/pages/services 进入此index.php/services

我想如何做到这一点?

我试过这个,但它不起作用

$route['(:any)'] = 'pages/';

==更新==

这种方法有什么动态方法吗?因此,在classname中没有url的情况下,该类中的每个函数都会重新映射?

1 个答案:

答案 0 :(得分:3)

为了将www.domain.com/services映射到pages/services,您会像:

$route['services'] = 'pages/services'

如果您想将www.domain.com/whatever映射到pages/whateverwhatever有一些变体并且您有一些控制器,那么您可以这样做:

// create rules above this one for all the controllers.
$route['(:any)'] = 'pages/$1'

也就是说,您需要为所有控制器/操作创建规则,最后一个应该是一个包罗万象的规则,如上所述。

如果你有太多的控制器并且你想要解决这个特定的路线,你的routes.php文件是安全的:

$path = trim($_SERVER['PATH_INFO'], '/');
$toMap = array('services', 'something');
foreach ($toMap as $map) {
    if (strpos($path, $map) === 0) {
       $route[$map] = 'pages/'.$map;
    }
}

请注意,您可能需要尝试使用$_SERVER['PATH_INFO']或任何为您提供完整网址路径的组件,而不是$_SERVER['ORIG_PATH_INFO']
此外,上面没有经过测试,这只是一个让你入门的例子。