1

我想重新映射 this:index.php/pages/services 到 thisindex.php/services中。

我想怎么做?

我试过这个,但它不工作

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

== 更新 ==

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

4

1 回答 1

3

为了映射www.domain.com/servicespages/services你会去像:

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

如果你想映射www.domain.com/whateverpages/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']或使用任何为您提供完整 url 路径的组件。
此外,以上内容未经测试,仅作为入门示例。

于 2013-07-19T15:33:56.390 回答