我不熟悉Nginx,但我尝试根据同一服务器上其他人准备的配置设置一个新的Web应用程序 .
我正在尝试设置重写,以便将/ api / users请求重定向到/api/index.php . #API位置下的此声明应该可以完成这项工作: if (!-e $request_filename){ rewrite ^(.*)$ /index.php; }
但是,我没有被重定向到/api/index.php,而是按照#PHP部分下的try_files中的定义发送到index.html .
我的 rewrite
内部条件语句是否已执行?
如果“是”,那么我为什么要在#PHP部分重定向,而不是从#API下的try_files获取404?
如果“不”那么为什么?如果$ uri在这种情况下不应包含任何'.php'部分,那么为什么#PHP部分被激活 .
这是主配置:
server {
server_name dev.app.myserver.com;
listen 80;
access_log /var/log/nginx/dev.app.myserver.com.access.log;
error_log /var/log/nginx/dev.app.myserver.com.error.log;
#
location / {
try_files $uri $uri/ =404;
}
# Zmienne
set $rootPath /data/dev-app/public_html;
set $yiiDebug 1;
set $editTranslations 1;
# Ogolna konfiguracja
include /data/dev-app/nginx/common/app.conf;
}
另外还包括:
root $rootPath;
index index.html index.php;
# API
location /api {
auth_basic off;
if (!-e $request_filename){ rewrite ^(.*)$ /index.php; }
# try_files $uri $uri/ /index.php?$args;
try_files $uri $uri/ =404;
}
# PHP
location ~ \.php$ {
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;
try_files $uri $uri/ /index.html;
# try_files $uri $uri/ =404;
}
对这个问题的任何启示都将不胜感激 .