Маршруты CodeIgniter 4 не работают должным образом

#codeigniter #codeigniter-4

#codeigniter #codeigniter-4

Вопрос:

Я только что попал в CI4 из фона CI3, но мне сложно получить маршруты для отображения соответствующего представления. Несмотря на то, что я правильно написал код в контроллере для загрузки представления, он всегда возвращает index.php несмотря ни на что, вместо правильного представления, даже когда я ввожу несуществующий маршрут. Страница 404 также не отображается.

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

 <?php

namespace AppControllers;

class Shop extends BaseController
{
    public function index()
    {
        return view('shop');
    }
}
  

Вот результат, который я получаю в браузере:
Результат

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

1. Вы пробовали echo view('shop'); ? Вы не должны возвращать его: codeigniter.com/user_guide/general/common_functions.html#view

2. Это тоже не работает. Я заметил, что страница все еще отображается index.php даже для несуществующих маршрутов вместо отображения страницы 404.

3. @VilLar да, он может вернуть представление. В CI 4 вы можете сделать и то, и другое. При загрузке ci4 представление по умолчанию возвращается без эха. github.com/codeigniter4/CodeIgniter4/blob/4.1/app/Controllers /…

Ответ №1:

РЕШЕНО!

Я понял, что проблема заключалась в том, что модуль перезаписи apache был отключен по умолчанию при запуске sudo a2query -m rewrite , поэтому мне пришлось включить его, запустив sudo a2enmod rewrite . Если у вас такая же проблема, пожалуйста, убедитесь, что ваш модуль перезаписи включен.

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

1. Или, если вы по какой-либо причине не можете включить mod_rewrite на своем сервере, просто удалите .htaccess, который поставляется с codeigniter, и убедитесь, что ваше приложение настроено на использование index.php досье. github.com/codeigniter4/CodeIgniter4/blob/develop/app/Config/… Таким образом, вам не нужен mod_rewrite, но ваши URL-адреса будут выглядеть так foo.com/index.php/controller/method/param