Решение проблем с маршрутизацией

1. Проблема с версией PHP

При установке зависимостей через Composer возникли ошибки:


Your requirements could not be resolved to an installable set of packages.
Cannot use codeigniter4/framework v4.3.0 as it requires php >=8.0
        

Решение:

  1. Переключите версию PHP на **8.1+** в OSPanel или в системе.
  2. Перезапустите сервер Apache/Nginx.
  3. Очистите кеш Composer и повторно установите зависимости:

composer clear-cache
composer update --ignore-platform-reqs
composer install --ignore-platform-reqs
        

2. Ошибка 404 на всех маршрутах

При попытке открыть /docs или /api сервер возвращал ошибку 404.

Решение:

Настройте виртуальный хост в Apache:


<VirtualHost *:80>
    ServerName doka.local
    DocumentRoot "C:/OSPanel/home/doka.local/public"
    <Directory "C:/OSPanel/home/doka.local/public">
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
        

После этого **перезапустите сервер Apache**.

3. Проблемы с .htaccess

В CodeIgniter 4 **все запросы должны обрабатываться через `index.php`**, а без настроек `.htaccess` маршруты не работают.

Решение:

Создайте или обновите .htaccess в public/:


<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^ index.php [QSA,L]
</IfModule>
        

4. Маршруты не работают

Если CodeIgniter 4 не обрабатывает маршруты, проверьте файл app/Config/Routes.php.

Решение:

Правильная настройка маршрутов:


namespace Config;

use CodeIgniter\Config\BaseConfig;
use CodeIgniter\Router\RouteCollection;

$routes = Services::routes();

// Главная страница
$routes->get('/', 'HomeController::index');

// API маршруты
$routes->group('api', function(RouteCollection $routes) {
    $routes->get('users', 'UserController::index');
    $routes->get('articles/(:num)', 'ArticleController::view/$1');
});
        

5. Контроллер не найден

Если при попытке открыть страницу получаете ошибку:


Controller Not Found: Unable to locate the specified class: HomeController.php
        

Решение:

  1. Проверьте, что файл контроллера находится в app/Controllers/.
  2. Файл **должен** называться **`HomeController.php`** и содержать:

namespace App\Controllers;

use CodeIgniter\Controller;

class HomeController extends Controller {
    public function index() {
        return view('home');
    }
}
        

Дополнительные проверки:


php spark cache:clear
php spark routes
        

Связанные страницы

Вернуться на главную