PHP 写一个简单的路由

作者: Allan_野草 | 来源:发表于2018-10-20 14:01 被阅读18次

假设有这样的一个访问地址
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();

其实也挺简单的~

相关文章

  • PHP 写一个简单的路由

    假设有这样的一个访问地址http://localhost/user/login如何让它路由到user控制器,的lo...

  • [Laravel5.1教程03] Laravel 工作流程

    一、预览 写路由# 在 aiyouTest/app/Http/routes.php 文件内写路由配置项 写模板文件...

  • 初识Laravel框架

    1、Laravel框架的路由: 因为我是写的接口,所以api路由都定义在api.php文件中了,如下图 然...

  • laravel 路由大全

    基本路由 应用中的大多数路都会定义在 app/routes.php 文件中。最简单的Laravel路由由URI和闭...

  • Vue路由

    前言 本文基于Vue2.0的简单路由的应用,更多路由详情请进入官网 简单路由基本使用 路由的简单方式官网中的栗子写...

  • express的路由嵌套

    一、安装依赖 二、简单的路由 以前我都是这样直接写路由。一个路由对应一个路径,没有任何嵌套。 现在我们就可以发挥应...

  • Laravel 学习笔记

    路由 文件位置: app/Http/routes.php 基础路由get/post 多请求路由 路由参数 路由别名...

  • tp6框架路由使用

    路由配置相关:配置开启config目录下的app.php,启用路由 配置开启config目录下的route.php...

  • 手写一个laravel(七) 路由实现

    手写一个laravel(七) 路由实现 创建Route/Router.php 为路由的实现类,实现get,any等...

  • laravel自带优化方式 --- 2021-09-29

    路由:php artisan route:cache 配置文件:php artisan config:cache ...

网友评论

    本文标题:PHP 写一个简单的路由

    本文链接:https://www.haomeiwen.com/subject/jabpzftx.html