PHP实现简单的路由

发布于 2024-01-09  293 次阅读


  • java,python服务器基本都自带的有路由,phph里面像thinkphp之类的框架也有,但是有的时候我们只是想通过某个单独的php实现一个简单的api处理/api/user/getinfo?username=这种请求,又懒得加一个框架,可以直接使用我的代码
  • 先将整个目录的请求重定向到指定的php,我使用的apache,就写.htaccess喽,如果用nginx可以搜一下相应的伪静态的写法
  • 把/api/v2/改成自己的php文件前面的目录,index.php改成php的文件名
RewriteEngine On
RewriteBase /api/v2/
RewriteCond %{REQUEST_URI} !^/index.php
RewriteRule ^(.*)$ index.php [L]
  • php写入这些
<?php
$url_parts = parse_url($_SERVER['REQUEST_URI']);
$path = $url_parts['path'];
switch ($path) {
    case "/api/v2/user/login":
        echo 1;
        exit;//记得每次触发后退出php,不然可能会误入其它的处理区域导致返回参数异常
    break;
}
?>

  • 有时也可以使用正则来处理一些路径里面的参数,比如提取/article/delete/33的33参数,只需要在switch前面对每一种情况加上正则即可
<?php
$url_parts = parse_url($_SERVER['REQUEST_URI']);
$path = $url_parts['path'];
//echo $path;

$pattern = '/\/article\/delete\/(\d+)/';

    // 进行匹配
if (preg_match($pattern, $path, $matches)) {
    $id = $matches[1]; 
    echo $id;
    //其它处理
    exit;//记得每次触发后退出php,不然可能会误入其它的处理区域导致返回参数异常
}

switch ($path) {
    case "/api/v2/user/login":
        echo 1;
        exit;//记得每次触发后退出php,不然可能会误入其它的处理区域导致返回参数异常
    break;
}
?>

届ける言葉を今は育ててる
最后更新于 2024-03-09