nginx config try_file avec écrasement conditionnel en fonction de l'existence d'un fichier cible

J'utilise le paramètre présenté ci-dessous pour rediriger tous les fichiers non détectés sur un emplacement de sauvegarde.

  location / {
try_files $uri @missing;
}

location @missing {
rewrite ^(.*)$ /fallback.php last;
}

Cela fonctionne bien, mais maintenant, j'ai une exigence plus complexe: j'ai vraiment besoin d'un retour à mon option de sauvegarde.

alors - J'ai besoin de l'étendre à, si fallback.php n'existe pas, il serait réécrit sur fallback2.php

Rafraîchir:

Voici le reste de mon fichier de configuration écrit par une chaîne try_files, Comment a-t-il été suggéré @ AD7six Dans les commentaires, au cas où il y a un problème dans le gestionnaire 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;
}
}

Si je n'ai qu'un seul endroit dans la rangée try_files, ça fonctionne:

try_files $uri /fallback.php;

Mais quand je suis en deuxième place, il charge le fichier fallback.php html Au lieu de la redirection

try_files $uri /fallback.php /fallback2.php;

</domain></subdomain>
Invité:

Babette

Confirmation de:

location = /fallback.php {
if (!-e $request_filename) {
[...]
}
}

Remarque: si vous avez regexped-location pour * .php, Ils seront en priorité.

Pour répondre aux questions, connectez-vous ou registre