无法在php中获取$\u请求值

无法在php中获取$\u请求值,php,.htaccess,restful-url,Php,.htaccess,Restful Url,我正在尝试创建一个restful api,唯一的问题是我无法获取$\u请求值。同样的代码在本地主机上运行良好,但在服务器上运行不好。这可能是由于我的htaccess代码造成的。当通过url调用api时,processApi是被调用的函数,并找出此api的哪个函数是通过url调用的 比如说 现在我试图调用api类中的test函数 htaccess代码重定向我的url 类中的第一个函数是检查测试函数是否存在的processApi 但是在processApi函数$\中,请求值为空 这是在服务器上发生

我正在尝试创建一个restful api,唯一的问题是我无法获取$\u请求值。同样的代码在本地主机上运行良好,但在服务器上运行不好。这可能是由于我的htaccess代码造成的。当通过url调用api时,
processApi
是被调用的函数,并找出此api的哪个函数是通过url调用的

比如说

现在我试图调用
api
类中的
test
函数

htaccess代码重定向我的url

类中的第一个函数是检查测试函数是否存在的
processApi

但是在
processApi
函数$\中,请求值为空

这是在服务器上发生的,但在本地主机上可以正常工作

这是访问代码

<IfModule mod_rewrite.c>
    RewriteEngine On

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(.*)$ file.php?request=$1 [QSA,NC,L]

    RewriteCond %{REQUEST_FILENAME} -d
    RewriteRule ^(.*)$ file.php [QSA,NC,L]

    RewriteCond %{REQUEST_FILENAME} -s
    RewriteRule ^(.*)$ file.php [QSA,NC,L]  

</IfModule>
通过在服务器上运行此代码,我得到了

{"status":"402","msg":"function not exist"}
仅仅因为$\u REQUEST['REQUEST']为空


请告诉我为什么get
$\u REQUEST['REQUEST']
=null。我的htaccess代码是否在
$\u请求['REQUEST']

中给出了正确的值?您可能应该查看PHP的
$\u服务器
变量,而不是
$\u请求

$_SERVER['REQUEST_URI'] should give you the correct URI for /api/test
在$\u服务器上运行
var\u dump
可以提供有关当前请求(以及处理该请求的服务器环境)的更多信息


希望这有帮助

这可能是由于在第一条规则之后运行的最后一条规则造成的。按如下方式更改代码:

<IfModule mod_rewrite.c>
    RewriteEngine On

    # skip after rewriting first time
    RewriteCond %{ENV:REDIRECT_STATUS} !^$
    RewriteRule ^ - [L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(.*)$ file.php?request=$1 [QSA,L]

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -s
    RewriteRule . file.php [L]  

</IfModule>

重新启动发动机
#第一次重写后跳过
重写条件%{ENV:REDIRECT_STATUS}^$
重写规则^-[L]
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-s
重写规则^(.*)$file.php?请求=$1[QSA,L]
RewriteCond%{REQUEST_FILENAME}-d[或]
重写cond%{REQUEST_FILENAME}-s
重写规则。file.php[L]

您是否尝试过
var\u dump($func)
?如果它应该像您期望的那样是
test
,那么为什么您的API类中没有function
test
?另外,请记住PHP不支持PUT或DELETE请求之类的原生功能。为了获取数据,您需要调用
parse\u str(file\u get\u contents('php://input“),$\u DATA)
这会将传递到服务器的任何数据放入$\u DATA变量中。首先感谢您的回答,但不幸的是,在使用您的代码更改
htaccess
代码后,我仍然收到
$\u请求['REQUEST']
processApi()函数中的
null
将您的file.php重命名为其他文件,并使用以下代码创建一个新的file.php:
并告诉我它打印了什么
<IfModule mod_rewrite.c>
    RewriteEngine On

    # skip after rewriting first time
    RewriteCond %{ENV:REDIRECT_STATUS} !^$
    RewriteRule ^ - [L]

    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-s
    RewriteRule ^(.*)$ file.php?request=$1 [QSA,L]

    RewriteCond %{REQUEST_FILENAME} -d [OR]
    RewriteCond %{REQUEST_FILENAME} -s
    RewriteRule . file.php [L]  

</IfModule>