2.2 隐藏入口文件和简单路由功能实现

  • 创建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即可
?>

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值