Mod rewrite Nginx禁用特定路径/url的url重写
我有以下用于url重写的nginx配置Mod rewrite Nginx禁用特定路径/url的url重写,mod-rewrite,nginx,url-rewriting,Mod Rewrite,Nginx,Url Rewriting,我有以下用于url重写的nginx配置 location / { ##merge try_files $uri $uri/ /index.php?q=$uri&$args; } location /devtools/phpmyadmin/ { ##merge root /var/www/domain.tld/web; location ~ \.php$ { try_files $uri =404; include /etc/ng
location / { ##merge
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location /devtools/phpmyadmin/ { ##merge
root /var/www/domain.tld/web;
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web2.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
}
在/var/www/domain.tld/web/
目录中有一个/api/
目录,我希望禁用此目录的url重写。所以,如果我想使用index.php从url访问:http://domain.tld/api/index.php/function/method
如何修改nginx配置文件
编辑:
我尝试以下重写,但不起作用:
location = /api {
rewrite ^ /api/index.php;
}
我承认我不理解您的配置文件。通常,您会定义一个根
,由所有(或大部分)位置
块继承。通常还有一个单独的location~\.php$
块,用于通过FastCGI将.php
脚本卸载到php处理器
暂时忽略location/devtools/phpmyadmin/
块,典型的实现如下所示:
root /var/www/domain.tld/web;
location / {
try_files $uri $uri/ /index.php?q=$uri&$args;
}
location ~ \.php$ {
try_files $uri =404;
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/lib/php5-fpm/web2.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;
}
nginx
指令如下所示
如果希望以/api
开头的URI使用不同的控制器,可以添加:
location /api {
try_files $uri $uri/ /api/index.php;
}
我看不出location/devtools/phpmyadmin/
块的用途,因为它似乎没有添加任何其他功能。在第一个location
块上方是否有root
指令?在服务器
块级别是否有location~\.php$
块?@RichardSmith第一个位置块上方没有根指令,另一个问题是没有-我从ispconfig编辑nginx配置