nginx 中的重写规则

nginx 中的重写规则

我正在使用 php-fpm 将 PHP 应用程序从 Apache 移至 Nginx。我几乎已经完成了,除了一个我无法在 Nginx 中执行的重写指令。以下是我需要移植的 Apache 配置的摘录:

# Handle alianza.quehambre.cl
RewriteCond %{HTTP_HOST} ^alianza\.quehambre\.cl [NC]
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-l
RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(api|get)/(.*)
RewriteRule ^(.*)$ /index.php/get/$1 [L,QSA]

完整的 Nginx 配置如下:这个要点,包括我目前编写上述规则但未奏效的尝试。

答案1

这应该可以解决问题:

server {
    server_name alianza.quehambre.cl;

    location / {

        location ~ ^/(api|get)/(.*) {
            # Whatever should happen at this point...
        }

        try_files $uri /index.php/get/$request_uri =404;
    }
}

答案2

尝试一下这个:

    location ~ (api|get)/(.*) {
    }

    location / {
      if ($http_host ~* "^alianza\.quehambre\.cl"){
        rewrite ^(.*)$ /index.php/get/$1 break;
      }
    }

相关内容