我希望能在一个相对简单的问题上得到一些帮助:
我一直在为大学编写一个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。
答案 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
文件正在做什么吗?
RewriteEngine On
- 启动Apache2重写引擎模块。RewriteCond %{REQUEST_FILENAME} !-f
- 当路径上不存在该文件时,RewriteCond %{REQUEST_FILENAME} !-d
- 当路径上不存在该目录时,RewriteRule ^(.*)$ api.1.0.php [L,QSA]
- 无论您提供什么,请使用查询字符串将其提供给api.1.0.php
,并在此处停止重写规则。此代码适用于此方式:
php -S localhost:80 router.php