Mit try_files zur angegebenen .php-Datei umleiten, wenn die angeforderte .php-Datei nicht gefunden wurde?

Mit try_files zur angegebenen .php-Datei umleiten, wenn die angeforderte .php-Datei nicht gefunden wurde?

Ich möchte mithilfe von nginx mit try_files auf /redirect.php umleiten, falls die erforderliche .php-Datei nicht gefunden wird. Ist das die richtige Vorgehensweise:

location ~ \.php$ {
...
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        try_files $uri /redirect.php =404;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
}

Es scheint jedoch nicht zu funktionieren.

Antwort1

location \.php$bedeutet, dass jede Anfrage, die mit .phpeiner Erweiterung endet, von diesem Block verarbeitet wird.

Ihr try_filesist am falschen Ort. Sie müssen es entweder unter einen vorhandenen location /Block oder an den serverBlock platzieren.

Antwort2

Dies verwenden wir inSlickStackum alle nicht vorhandenen .phpAnfragen zur Fehlerbehandlung (und 301-Weiterleitungsverwaltung) an WordPress umzuleiten:

location ~* \.php$ {
    include /etc/nginx/fastcgi.conf;
    try_files $uri $uri/ /index.php?$args; ## send .php requests to WordPress if not found
...
}

Bitte beachten Sie, dass in vielen Antworten erwähnt wird, fastcgi_intercept_errors on;dass dies bei der Verwendung für das PHP-FPM-Routing hier jedoch nicht erforderlich ist try_files.

Referenz:https://github.com/littlebizzy/slickstack/edit/master/modules/nginx/sites/production.txt

verwandte Informationen