我不熟悉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;
}

对这个问题的任何启示都将不胜感激 .