基本上,您将任何传入请求重写为您的index.php
. .htaccess
下面是来自Kohana框架的示例:
# 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 框架如何运作的一种想法。
顺便说一句,您所说的引导程序的另一个名称是前端控制器。您可以搜索该术语以找到有关该模式的更多信息。