Как прочитать параметр URL из контроллера по умолчанию

#php #.htaccess #codeigniter

#php #.htaccess #codeigniter

Вопрос:

Я хочу захватить параметр из URL на контроллере по умолчанию, но он выдает ошибку 404 страница не найдена.

routes.php

 $route['default_controller'] = 'MainBrain';
$route['MainBrain/(:any)'] = "MainBrain/index/$1";
$route['404_override'] = '';
$route['translate_uri_dashes'] = FALSE;
 

MainBrain .php

 class MainBrain extends CI_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->helper('url');
    }

    public function index() {
        echo 'Parameter value - ' . $this->uri->segment(3);
        $this->load->view('index', $data);
    }

}
 

Теперь, когда я когда-либо пытаюсь загрузить url
localhost:/myproject => Это загружает мой контроллер по умолчанию и его представление, но когда я пытаюсь localhost:/myproject/pa8989 => Это дает мне ошибку 404 page not found.

.htaccess :

 RewriteEngine on
RewriteCond $1 !^(index.php|resources|robots.txt)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?/$1 [L,QSA]
 

Итак, как я могу получить параметр формы параметра по умолчанию вместо ошибки 404?

Ответ №1:

Если вы хотите, чтобы localhost:/myproject/pa8989 перенаправлял к вашей функции, вам нужно изменить маршрут :

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

Для

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

В противном случае вам нужно будет получить доступ к функции через localhost:/myproject/mainbrain/pa8989

Комментарии:

1. Спасибо за ваш ответ, но это не работает. Потому что, если он вызовет любой другой контроллер, он перенаправит только на контроллер по умолчанию. Пример — localhost:/myproject/othercontroller/ => Тогда он перенаправит только на контроллер по умолчанию.