Mod rewrite Nginx禁用特定路径/url的url重写

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

我有以下用于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/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配置