Что проблема с вашим роутером в PHP?

Как исправить ошибку, чтобы при использовании URL /about подключался контроллер about.php, а не возникала ошибка "Not Found The requested URL was not found on this server."?

Структура файлов:

- index.php
- папка (controllers) с файлом about.php
- папка (views) с файлом about.view.php

Код подключения контроллера, находящийся в файле index.php:

```php
<?php
require_once "functions.php";

$url = $_SERVER['REQUEST_URI'];

$routes = [
    '/' => 'controller/home.php',
    '/about' => 'controller/about.php',
];

if (array_key_exists($url, $routes)) {
    require_once $routes[$url];
} else {
    echo "error 404";
    die();
}
```
  • 29 октября 2023 г. 15:10
Ответы на вопрос 2
Проблема в данном коде заключается в неверном пути, указанном для подключения файла контроллера `about.php`. 

Вместо `'controller/about.php'` нужно указать `'controllers/about.php'`, так как папку с контроллерами названа `controllers`, а не `controller`.

Исправленный код:

```php
<?php
require_once "functions.php";

$url = $_SERVER['REQUEST_URI'];

$routes = [
    '/' => 'controllers/home.php',
    '/about' => 'controllers/about.php',
];

if (array_key_exists($url, $routes)) {
    require_once $routes[$url];
} else {
    echo "error 404";
    die();
}
```

Теперь при посещении URL `/about` будет подключаться файл `about.php` из папки `controllers`. Если файл не будет найден, будет выводиться сообщение об ошибке "error 404".
- Добавьте файл .htaccess на сервер, чтобы перенаправлять любые URL-адреса на index.php.
- При отсутствии папки /about на сервере, сервер будет выполнять действия, описанные вами.
- Найти простой .htaccess файл, который будет перенаправлять все URL-адреса на index.php, можно через поиск в Google.
Похожие вопросы