Перенаправление на результаты контроллера 404 Страница не найдена - PullRequest
1 голос
/ 17 апреля 2020

Я создаю веб-приложение в Codeignitor, используя Laragon в качестве локального сервера. Когда я пытаюсь «перенаправить» на контроллер - я получаю «404 Page Not Found». Если я перенаправить на View - это работает. Я могу получить доступ к контроллерам с помощью других методов, таких как «Открыть форму».

Вот мой файл .htaccess:

    RewriteEngine on
    RewriteCond $1 !^(index\.php|assets|images|js|css|uploads|favicon.png)
    RewriteCond %(REQUEST_FILENAME) !-f
    RewriteCond %(REQUEST_FILENAME) !-d
    RewriteRule ^(.*)$ index.php/$1 [L]

Это мой контроллер - для теста я использовал Redirect to View "page-login" и Controller "Private-area". Я могу получить доступ к представлению, но контроллер отправляет страницу 404. Страница не найдена.

if($this->form_validation->run()){
    $result = $this->login_model->can_login($this->input->post('user_email'), $this->input->post('user_password'));
    if($result == ''){
        redirect('private_area');
    }
    else {
        $this->session->set_flashdata('message', $result);
        redirect('page-login');

К вашему сведению Я могу получить доступ к контроллерам (в данном примере «Регистрация»), используя другие методы, такие как «Открыть форму», например:

<?php echo form_open('register/validation'); ?> 

Почему я получаю ошибку 404?

Ответы [ 3 ]

0 голосов
/ 18 апреля 2020

redirect() function

Выполняет ли «перенаправление заголовка» на указанный URI. Если вы укажете полный URL-адрес сайта, ссылка будет создана, но для локальных ссылок просто предоставьте сегменты URI контроллеру, на который вы хотите направить, создаст ссылку. Функция создаст URL на основе значений вашего файла конфигурации. (- источник )

Итак, URL должен быть

redirect("/controller/method/parameters");

Или полный URL

В вашем коде Codeigniter будет выглядеть для index() метода private_area контроллера.

0 голосов
/ 18 апреля 2020

Спасибо всем!

Так что я думаю @ Don'tPani c прибил его. Я думал, что «Redirect» будет указывать на контроллер, но он указывает на маршрут. Итак, я создал маршрут в своем файле Routes. php, где

$route['private_area'] = 'private_area';

И все работает. Это правильный способ сделать это?

Ie для определения маршрутов в файлах маршрутов. php ... затем вызовите их по мере необходимости, используя «Redirect»?

0 голосов
/ 18 апреля 2020

Ваш синтаксис перенаправления неверен:

функция перенаправления CI () имеет следующую структуру:

redirect($uri = '', $method = 'auto', $code = NULL)

Не забывайте использовать относительный путь, например '/ my_controller / my_function'

, как в этом примере:

redirect('/login/form/');

вам нужно автоматически загрузить / загрузить помощник по URL с помощью: $this->load->helper('url');

синтаксис form_open () правильный, вам нужно автоматически загрузить / загрузить помощник по формам с помощью: $this->load->helper('form');

...