location = /fallback.php {
if (!-e $request_filename) {
[...]
}
}
Nota: se você tiver locais de regex para * .php, eles terão prioridade.
Estou usando uma configuração como mostrada abaixo para redirecionar todos os arquivos não encontrados para o local de fallback único
location / {
try_files $uri @missing;
}
location @missing {
rewrite ^(.*)$ /fallback.php last;
}
Isso está funcionando bem, mas agora tenho um requisito mais complexo, pois preciso efetivamente de um retorno ao meu fallback.
Então - eu preciso estender isso para que, se fallback.php não existir, ele reescreva a fallback2.php
ATUALIZAÇÃO:
Aqui está o resto do meu arquivo de configuração escrito com a linha try_files como sugerido pelo sugerido pelo @ AD7six nos comentários, apenas no caso de haver um problema no manipulador php:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
server_name ~^(?<subdomain>\w*?)?\.?(?<domain>\w+\.\w+)$;
if ($subdomain = "") {
set $subdomain "www";
}
if (!-d "/home/me/projects/$domain/$subdomain") {
set $subdomain "www";
}
root /home/me/projects/$domain/$subdomain;
index index.php index.html index.htm;
location / {
try_files $uri /fallback.php /fallback2.php;
}
location ~ \.php$ {
try_files $uri $uri/ =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
se eu tiver apenas um local na linha try_files, ele funciona:
try_files $uri /fallback.php;
mas quando eu tenho um segundo local, ele faz o download do fallback.php html em vez de redirecionar
try_files $uri /fallback.php /fallback2.php;
location = /fallback.php {
if (!-e $request_filename) {
[...]
}
}
Nota: se você tiver locais de regex para * .php, eles terão prioridade.
Tags nginx