По сути, вы переписываете любой входящий запрос на ваш index.php
. Вот пример .htaccess
из Kohana framework:
# Turn on URL rewriting
RewriteEngine On
# Protect application and system files from being viewed
# RewriteRule ^(application|modules|system) - [F,L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT,L]
Таким образом, ваш пример будет перенаправлен на index.php/admin
. Затем вы можете посмотреть на $_SERVER['REQUEST_URI']
, чтобы определить, что делать дальше.
Относительно распространенной схемой будет использование первого сегмента URI
в качестве контроллера, а второго - в качестве метода. Так, например:
$segments = explode($_SERVER['request_uri'], '/');//array('admin')
if(isset($segments[0]))
{
$class = $segments[0].'_controller';//'admin_controller
if(isset($segments[1]))
$method = $segments[1];
else
$method = 'index';
}
else
{
$class = 'index_controller';
$method = 'index';
}
$controller = new $class;
$controller->$method();
Этот код ни в коем случае не готов к производству, так как он погибнет от огненной смерти, если, например, пользователь посетит URL для несуществующего контроллера. Это также не делает хорошие вещи, такие как обработка аргументов. Но в этом и заключается идея работы фреймворка PHP MVC.
Кстати, другое название того, что вы называете начальной загрузкой, - front controller . Вы можете использовать этот термин в Google, чтобы найти гораздо больше информации о шаблоне.