继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

PHP 写一个简单的路由

慕的地10843
关注TA
已关注
手记 1081
粉丝 200
获赞 962

假设有这样的一个访问地址
http://localhost/user/login
如何让它路由到user控制器,的login方法呢?类似于
http://localhost/index.php ? controller=user & action=login

Just do it

首先呢,像http://localhost/user/login的路径,它对应的网站根目录下并没有这样的资源,是通过一定规则解释出来的,称为伪静态。

第一步

在Server应用的配置文件中,开启Rewrite重写模块。比如主流的nginx、apache都支持该模块。

第二步

在index.php的目录下,创建一个.htaccess文件,注意,没有文件名。这个文件是Rewrite可识别的分布式配置文件,内容可以为:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([a-zA-Z0-9/]*)$ index.php/$1

解释一下,
第一行,RewriteEngine On:开启重写
第二、三行,RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME} !-f:如果不存在该目录或文件,才走下一条规则
第四行,RewriteRule ^([a-zA-Z0-9/]*)$ index.php/$1:把localhost后面的路径user/login丢给index.php去处理,即路径重写为index.php/user/login

第三步

index.php中,路径即可通过取出 $_SERVER['REQUEST_URI'],按照自己的规则,分割字符串,得到想要的路由参数。

比如上面的例子,按照/controller/action分割的话,那么controller=user、action=logIn

$c = new $controller();
$c->$action();

其实也挺简单的~



作者:夏镇冰茶
链接:https://www.jianshu.com/p/d7c1083110ff


打开App,阅读手记
1人推荐
发表评论
随时随地看视频慕课网APP