【问题标题】:CodeIgniter Routes - remove a classname from URL for one class onlyCodeIgniter Routes - 仅从一个类的 URL 中删除类名
【发布时间】:2013-07-19 15:16:33
【问题描述】:

我想重新映射这个:index.php/pages/services 进入这个index.php/services

我想怎么做?

我试过了,但它不起作用

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

== 更新 ==

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

【问题讨论】:

  • $route['services'] = 'pages/services';
  • @Twisted1919 - 你知道是否有任何动态方法,所以Pages 类中的每个函数都会在没有类名的情况下重新映射?
  • 您可以尝试:$route['(:any)'] = 'pages/$1' 但这将匹配所有内容。将以完整的方法发布答案

标签: php codeigniter class


【解决方案1】:

为了将www.domain.com/services 映射到pages/services,您可以这样:

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

如果你想将www.domain.com/whatever 映射到pages/whatever 并且whatever 有几个变体并且你有几个控制器,那么你会这样做:

// 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['ORIG_PATH_INFO'] 或任何为您提供完整 url 路径的组件,而不是 $_SERVER['PATH_INFO']
另外,以上内容未经测试,仅供参考。

【讨论】:

  • 谢谢,我会检查一下,并会回来提供反馈
猜你喜欢
  • 1970-01-01
  • 2017-12-12
  • 2022-01-07
  • 1970-01-01
  • 2017-01-20
  • 2023-04-10
  • 2016-01-11
  • 1970-01-01
  • 2016-05-14
相关资源
最近更新 更多