- 创建application目录
- 将student目录放入application目录下
- public目录下建立.htaccess
如下图所示:
index.php
<?php
$pathinfo = isset($_SERVER['PATHINFO']) ? $_SERVER['PATH_INFO'] : $_SERVER['REDIRECT_URI']; //这个地方得改,天坑,隐藏index.php之后会请求student/student/index会导致$_SERVER['PATHINFO']无法获取,所以得使用$_SERVER['REDIRECT_URI']
$arr = explode('/',trim($pathinfo,'/'));
list($module,$controller,$action) = $arr;
define('MODULE_PATH','../application'.$module);
$controller_name =ucwords($controller).'Controller';
$controller_path = MODULE_PATH.'controller/'.$controller_name.'.php';
require $controller_path;
$obj = new $controller_name();
$obj->$action();
.htaccess (解决apache隐藏index.php报错)
<IfModule mod_rewrite.c>
Options +FollowSymlinks -Multiviews
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
</IfModule>
路由功能
index.php
<?php
<?php
$pathinfo = isset($_SERVER['PATH_INFO']) ? $_SERVER['PATH_INFO'] : $_SERVER['REDIRECT_URL'];
//新增路由功能
$route = [
'student' => 'student/student/index',
'login' => 'index/user/login' //前提是你写了对应的模块、控制器和相应操作
];
$pathinfo = trim($pathinfo,'/');
if(isset($route[$pathinfo]))
{
$pathinfo = $route[$pathinfo];
}
$arr = explode('/',$pathinfo);
if(!isset($arr[2])){
exit("请求信息有误");
}
list($module,$controller,$action) = $arr;
define('MODULE_PATH', '../application/'.$module.'/');
$controller_name =ucwords($controller).'Controller';
$controller_path = MODULE_PATH.'controller/'.$controller_name.'.php';
require $controller_path;
$obj = new $controller_name();
$obj->$action();
//请求http://xxx/student/student/index就可以直接请求http://xxx/student即可
?>