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

时间:2016-04-17 10:55:27

标签: php .htaccess

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

我一直在为大学编写一个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。

1 个答案:

答案 0 :(得分:4)

这很容易。使用这种方式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,并在此处停止重写规则。
  5. 此代码适用于此方式:

    php -S localhost:80 router.php