#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/ => Тогда он перенаправит только на контроллер по умолчанию.