NGINX上的PHP应用程序的mod_rewrite

时间:2015-04-18 14:22:40

标签: php .htaccess mod-rewrite nginx

我正在尝试迁移到我的新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

一样传递

有什么建议吗?

谢谢!

0 个答案:

没有答案