栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > PHP

PHP 写一个简单的路由

PHP 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

PHP 写一个简单的路由

假设有这样的一个访问地址
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} !-d与RewriteCond %{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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/227015.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号