[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Роутинг на PHP без базы данных
Страницы: 1, 2
biffick
Всем здравствуйте.

Нужна помощь с роутингом на PHP.
Не могу справиться с редиректом несуществующих страниц на URL /404.
Также не получается настроить ответ "Not Found 404".

Делаю для своего маленького проекта, поэтому база данных не нужна, в принципе, как и движки.

Буду премного благодарен!

Содержание .htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
</
IfModule>


Содержание index.php

/* Обработка ЧПУ-запросов */
class Router {
private $_route = array(); // Переменная хранит маршруты, и файлы, которые будут открываться при определеном маршруте

public function setRoute($dir, $file) {
$this->_route[trim($dir, '/')] = $file;
}

public function route() {
if (!isset($_SERVER['PATH_INFO'])) { // Если открыта главная страница
include './pages/mainpage.php'; // Открываем файл главной страницы
} elseif (isset($this->_route[trim($_SERVER['PATH_INFO'], '/')])) { // Если маршрут задан
include $this->_route[trim($_SERVER['PATH_INFO'], '/')]; // Открываем файл, для которого установлен маршрут
}
else return false; // Если маршрут не задан

return true;
}
}


$route = new Router;

/***************/
/* URL -> файл */
/***************/

/* Страницы */
//$route->setRoute('page-01', "./pages/page-01.php"); // Страница 01

$route->setRoute('page-02', "./pages/page-02.php"); // Страница 02
$route->setRoute('page-03', "./pages/page-03.php"); // Страница 03
$route->setRoute('page-04', "./pages/page-04.php"); // Страница 04

/* Статьи */
//$route->setRoute('article-1', "./articles/article-001.php"); // Статья №001
//$route->setRoute('article-2', "./articles/article-002.php"); // Статья №002

/* Страница 404 */

$route->setRoute('404', "./pages/404.php"); // 404
if (!$route->route()) { // Если URL не найден
header("HTTP/1.1 404 Not Found");
header("Location: /404");
exit();
}
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.