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。
这个问题不像其他的问题,我搜索到很多关于这一点,我无法找到答案
,当我在根去除第二块重写工作。
答
对于位置问题,您应该检查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;
}
如果你的PHP处理的位置? –
@AlexanderTolkachev我必须处理位置根目录下的'/'和'cp'子文件夹 –