我正在尝试迁移到我的新Nginx服务器,但是我无法让最后一部分工作。
这是需要mod_rewrite工作的PHP代码。
public function processApi(){
$func = strtolower(trim(str_replace("/","",$_REQUEST['x'])));
if((int)method_exists($this,$func) > 0)
$this->$func();
else
$this->response('',404);
}
这是我在Apache服务器上工作的.htaccess(位于/ app / services中),我需要转换为Nginx:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-s
RewriteRule ^(.*)$ api.php?x=$1 [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.*)$ api.php [QSA,NC,L]
RewriteCond %{REQUEST_FILENAME} -s
RewriteRule ^(.*)$ api.php [QSA,NC,L]
</IfModule>
我通过转换器()运行它然后得到了这个但是没有用。
# nginx configuration
location / {
if (!-e $request_filename){
rewrite ^(.*)$ /api.php?x=$1 break;
}
if (-e $request_filename){
rewrite ^(.*)$ /api.php break;
}
if (-e $request_filename){
rewrite ^(.*)$ /api.php break;
}
}
我读到使用if语句不是最佳做法所以我尝试了以下但没有成功:
location /app/services {
try_files $uri $uri/ @rewrite;
}
#Rewrites
location @rewrite {
rewrite $(.*)$ /app/services/api.php?x=$1;
}
将传递的示例网址如下所示:
www.example.com/app/services/customers
我想要&#34;客户&#34;像 api.php?x = customers
一样传递有什么建议吗?
谢谢!