我为url rewrite提供了以下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
:http://domain.tld/api/index.php/function/method
如何修改nginx配置文件?
修改
我尝试以下重写,但没有工作:
location = /api {
rewrite ^ /api/index.php;
}
答案 0 :(得分:1)
我承认我不理解您的配置文件。通常,您要定义root
要由所有(或大多数)location
块继承。通常是一个单独的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
指令为documented here。
如果您希望以/api
开头的URI使用不同的控制器,您可以添加:
location /api {
try_files $uri $uri/ /api/index.php;
}
我无法看到location /devtools/phpmyadmin/
块的用途,因为它似乎没有添加更多功能。