将一个非常简单的htaccess转换为PHP路由器


Converting a very simple htaccess into a PHP router?

我希望我能在一个相对简单的问题上得到一些帮助:

我一直在为大学编写PHP应用程序,由于我完全没有提前考虑,他们测试我们应用程序的服务器不是Apache,它们只是php -S服务器(PHP内置服务器)。

因此,我的应用程序完全依赖于将URI路由到一个特定的文件,这是我在.htaccess:中工作得很好的一点

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ api.1.0.php [L,QSA]

我知道你在使用普通的PHP服务器时可以使用路由器文件,但有人能帮我把这个.htaccess文件"转换"成PHP路由器吗?

提前感谢任何能为我指明正确方向的人!

编辑:我想提出这个问题的更好方法是,有人能帮我理解.htaccess文件在做什么吗?然后我可以很容易地将它转换成PHP。

这很容易。使用这种方式router.php:

<?php
    $path = parse_url($_SERVER["REQUEST_URI"], PHP_URL_PATH);
    if (!file_exists($path))
      include "api.1.0.php";
    else
      return false;
?>

上面的代码是您拥有的.htaccess文件的替换:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ api.1.0.php [L,QSA]

我想提出这个问题的更好方法是,有人能帮我理解.htaccess文件在做什么吗

  1. RewriteEngine On-启动Apache2重写引擎模块
  2. RewriteCond %{REQUEST_FILENAME} !-f-当路径上不存在文件时
  3. RewriteCond %{REQUEST_FILENAME} !-d-当路径上不存在目录时
  4. RewriteRule ^(.*)$ api.1.0.php [L,QSA]-无论您给出什么,都将其与查询字符串一起提供给api.1.0.php,并在此处停止重写规则

此代码适用于以下方式:

php -S localhost:80 router.php