Данный роутер не претендует на звание лучшего решения и пойдет сугубо новичкам как отталкивающий материал для создания своей системы роутера по сайту, но вполне рабочее решение которое можно применять в реальных проектах. Ну поехали.
Для начала добавим в файл .htaccess следующий код:
DirectoryIndex index.php
Options All -Indexes
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
С помощью этого кода делаем единую точку входа. Все наши запросы к сайту будут проходить через index.php.
Теперь пишем файл роутера назовем его допустим route.php и положим по адресу domaine.ru/core/route.php:
<?php
/* Константы - обычно задаются раньше чем в самом файле роутера */
define('CORE_DIRECTORY', __DIR__);
// Действия по умолчанию
$application_name_default = 'main';
$action_name_default = 'index';
// Разбираем url на части
$routes = explode('/', filter_var($_SERVER['REQUEST_URI'], FILTER_SANITIZE_URL));
// Получаем имя приложения
$application_name = !empty($routes[1]) ? $routes[1] : $application_name_default;
// Получаем имя экшена
$action_name = !empty($routes[2]) ? $routes[2] : $action_name_default;
// Грузим приложение
$application_path = CORE_DIRECTORY . '/application/'. strtolower($application_name . '/' . $action_name) . '.php';
if ( file_exists($application_path) )
{
require $application_path;
}
else
{
// Если неверное приложение то на главную
$application_path = CORE_DIRECTORY . '/application/'.$application_name_default.'/'.$action_name_default.'.php';
require $application_path;
}
При необходимости путь "CORE_DIRECTORY . '/application/" заменить на свой и поместить файл route.php куда нужно (а лучше использовать его как class).
Теперь ссылки делаем формата <a href="/chat/index">Чат<a> где "chat" это папка с файлами а "index" нужный файл.
Адрес типа domaine.ru/chat приведет к domaine.ru/core/application/chat/index.php
А адрес domaine.ru/chat/list приведет к domaine.ru/core/application/chat/list.php
Так же можно по простому передавать GET переменные:
domaine.ru/chat?page=2 и использовать "page" как обычную GET переменную (не забываем фильтровать при надобности).
Если будут вопросы прошу в ЛС =)