Как исправить ошибку, чтобы при использовании 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();
}
```
Проблема в данном коде заключается в неверном пути, указанном для подключения файла контроллера `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.