O problema que você está tendo é, na verdade, um bug de longa data que foi registrado há 3 anos , que causa alias
e try_files
não funcionam realmente juntos.
Na página de bugs, há uma solução de Luke Howell , que é a seguinte:
location /api { ## URL string to use for api ##
alias /home/api/site_files/; ## Site root for api code ##
## Check for file existing and if there, stop ##
if (-f $request_filename) {
break;
}
## Check for file existing and if there, stop ##
if (-d $request_filename) {
break;
}
## If we get here then there is no file or directory matching request_filename ##
rewrite (.*) /api/index.php?$query_string;
## Normal php block for processing ##
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
Observe que, no que diz respeito ao nginx, SE é mau e deve ser evitado, se possível a>.