Codeigniter路由:任何

时间:2017-08-08 15:27:56

标签: php codeigniter codeigniter-2 codeigniter-3

我从Codeigniter 2迁移到3.我在默认控制器目录中以及称为内容和索引的子目录中都有控制器文件。当前routes.php文件如下所示:

$controller_dir = opendir(APPPATH."controllers");
while (($file = readdir($controller_dir)) !== false) {
    if (substr($file, -4) == ".php" ) {
        $route[substr($file, 0, -4)."(.*)"] = substr($file, 0, -4)."$1";
    } else if (substr($file, -5) == ".php/") {
        $route[substr($file, 0, -5)."(.*)"] = substr($file, 0, -5)."$1";
    }
}

$route['reviews'] = 'content/reviews/index/profile/$1';
$route['money/(:any)'] = 'indexes/money/index/$1';
$route['faq/do-i-need-to-signup'] = 'faq/question_answer';
$route['(:any)'] = 'index/profile/$1';

index/profile/$1具有检查数据库中用户名的逻辑。我正在使用它作为www.example.com/robert,其中robert是动态名称(将其视为referal名称)。它在CI 2中工作。但是,在CI 3中,使用相同的代码获得404错误。

我在这里缺少什么?如果问题不明确,请问我。

1 个答案:

答案 0 :(得分:1)

现在您需要在路由中指定它将在查询部分中使用更多参数。试试这个:

$route['reviews/(:any)'] = 'content/reviews/index/profile/$1';

这应解决 404错误。您可以像http://localhost/reviews/robert

那样访问它

如果您想传递更多参数,只需在路线中指定即可$number

E.g:

$route['reviews/(:any)/(:any)'] = 'content/reviews/index/profile/$1/$2';