nginx rewirte在两个不同的文件夹(文件夹+子文件夹不同rewirte)

nginx rewirte在两个不同的文件夹(文件夹+子文件夹不同rewirte)

问题描述:

我对nginx重写有不同的问题。nginx rewirte在两个不同的文件夹(文件夹+子文件夹不同rewirte)

在apache中我使用htaccess文件的根目录和子目录。

在根文件夹使用:

<IfModule mod_rewrite.c> 
RewriteEngine on 
RewriteBase/
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-l 
RewriteRule ^(.+)$ index.php?req=$1 [QSA,L] 
</IfModule> 

和子文件夹cp

但是当我试图通过这个来配置nginx的:

,但我做的尝试:

server { 
    listen  xx.xx.xx.xx:80; 
    server_name mydomain.net www.mydomain.net; 
    root  /home/admin/web/mydomain.net/public_html; 
    index  index.php index.html index.htm; 
    access_log /var/log/nginx/domains/mydomain.net.log combined; 
    access_log /var/log/nginx/domains/mydomain.net.bytes bytes; 
    error_log /var/log/nginx/domains/mydomain.net.error.log error; 

    #first block 
    location/{ 

    if (!-e $request_filename){ 
     rewrite ^(.+)$ /index.php?req=$1 last; 
     } 

    } 
    #second block  
    location /cp { 

    if (!-e $request_filename){ 
     rewrite ^(.+)$ /router.php?get=$1 last; 
     } 

    } 
} 

但是,当我尝试下载强制PHP。

这个问题不像其他的问题,我搜索到很多关于这一点,我无法找到答案

,当我在根去除第二块重写工作。

+0

如果你的PHP处理的位置? –

+0

@AlexanderTolkachev我必须处理位置根目录下的'/'和'cp'子文件夹 –

对于位置问题,您应该检查this answer。对于处理PHP你应该配置PHP-FPM,并加入到nginx的配置PHP处理地点:

location ~ \.php$ { 
     include fastcgi_params; 
     fastcgi_pass unix:/var/run/php-fpm.sock; 
     fastcgi_param SCRIPT_FILENAME /var/nginx/$fastcgi_script_name; 
     fastcgi_index index.php; 
    }