为什么我的新路由到控制器不工作,而旧的路由工作正常?

问题描述 投票:0回答:1

我是codeigniter的新手。目前我正在尝试创建一个博客。我使用.htaccess文件从url中删除index.php。然而,这没有问题。

我的网址路由对于帖子控制器工作正常。但它不适用于新的管理员控制器。

这是路线文件:

$route['default_controller'] = 'welcome';
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;


// My routes
$route['category'] = 'posts/category';
$route['(:any)'] = 'posts/index/$1';
$route['(:any)/(:any)'] = 'posts/view/$1/$2';
$route['admin'] = 'admin';

这是Admin控制器:

class Admin extends CI_Controller {
    public function index()
    {
        $this->load->view('admin/index');
    }
}

这是索引文件:

<?php echo "hello"; ?>

当我试图访问http://localhost/admin时,我收到404错误。但所有其他路由工作正常,没有任何错误。

行动

我已经尝试将default_controller更改为admin控制器,然后它正常工作。我在http://localhost上获得了所需的输出。

$route['default_controller'] = 'admin';

那么我在这里失踪了什么?

php routes codeigniter-3
1个回答
1
投票

由于订单或路由,您正面临问题。在CodeIgniter命令或给定的路由很重要。让我们来看看你的路线,在category路线之后你写了这条路线,

$route['(:any)'] = 'posts/index/$1';

这条路线只是意味着捕获除默认路线或category路线以外的任何路线,因此无论您想要去哪个URL,它都会将您重定向到上述路线。要解决此问题,请更改此路由的顺序,

$route['admin'] = 'admin';
$route['category'] = 'posts/category';
$route['(:any)'] = 'posts/index/$1';
$route['(:any)/(:any)'] = 'posts/view/$1/$2';
© www.soinside.com 2019 - 2024. All rights reserved.