将非常简单的htaccess转换为PHP路由器?
我希望我能在一个相对简单的问题上得到一些帮助: 我一直在为大学编写一个PHP应用程序,多亏我完全缺乏先见之明,他们测试我们应用程序的服务器不是Apache,它们只是将非常简单的htaccess转换为PHP路由器?,php,.htaccess,Php,.htaccess,我希望我能在一个相对简单的问题上得到一些帮助: 我一直在为大学编写一个PHP应用程序,多亏我完全缺乏先见之明,他们测试我们应用程序的服务器不是Apache,它们只是PHP-S服务器(PHP内置服务器) 因此,我的应用程序完全依赖于将URI路由到一个特定文件,这是我在.htaccess中做得很好的一点: RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRu
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
文件在做什么吗
重写引擎开启
-启动Apache2重写引擎模块重写cond%{REQUEST_FILENAME}-f
-当路径上不存在文件时重写cond%{REQUEST_FILENAME}-d
-当路径上不存在目录时RewriteRule^(.*)$api.1.0.php[L,QSA]
-无论您给出什么,都可以使用查询字符串将其提供给api.1.0.php
,并在此处停止重写规则php -S localhost:80 router.php
非常感谢你的帮助!你给我指明了正确的方向。请您解释一下与htaccess(parse_url)相关的第一行代码好吗?@Ollie是的。第一行从浏览器获取请求URL,正如您在浏览器地址栏中看到的那样,离开域。请求的是
路径
。@Ollie So,当您给出类似http://localhost/users/123/ollie/posts/5
,$path
将包含/users/123/ollie/posts/5
:)@奥利解释清楚了吗?@奥利要了解.htaccess
在做什么,请看这里:1<代码>重写引擎打开-启动Apache2重写引擎模块。2. <代码>重写cond%{REQUEST_FILENAME}-f-当路径上不存在文件时,3<代码>重写cond%{REQUEST_FILENAME}-d-当路径上不存在目录时,4RewriteRule^(.*)$api.1.0.php[L,QSA]
-无论您给出什么,都可以使用查询字符串将其提供给api.1.0.php
,并在此处停止重写规则。
php -S localhost:80 router.php