Почему моя новая маршрутизация на контроллер не работает, в то время как старая маршрутизация работает правильно? - PullRequest
0 голосов
/ 25 апреля 2019

Я новичок в codeigniter.В настоящее время я пытаюсь создать блог.Я использовал файл .htaccess, чтобы удалить index.php из URL.Однако с этим проблем нет.

Мои URL-адреса работают нормально для контроллера сообщений.Но он не работает с новым контроллером администратора.

Вот файл маршрутизации:

$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';

Вот контроллер администратора:

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

Вот индексfile:

<?php echo "hello"; ?>

Я получаю ошибку 404, когда пытаюсь получить доступ к http://localhost/admin.Но все остальные маршруты работают без ошибок.

Действие

Я попытался изменить default_controller на контроллер администратора, затем он работает нормально.Я получаю желаемый результат на http://localhost.

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

Так чего мне здесь не хватает?

1 Ответ

1 голос
/ 25 апреля 2019

Вы столкнулись с проблемой из-за заказа или маршрутизации. В порядке 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';
...