Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将非常简单的htaccess转换为PHP路由器?_Php_.htaccess - Fatal编程技术网

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

将非常简单的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应用程序,多亏我完全缺乏先见之明,他们测试我们应用程序的服务器不是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
文件在做什么吗

  • 重写引擎开启
    -启动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-当路径上不存在目录时,4
    RewriteRule^(.*)$api.1.0.php[L,QSA]
    -无论您给出什么,都可以使用查询字符串将其提供给
    api.1.0.php
    ,并在此处停止重写规则。
    php -S localhost:80 router.php