Ich habe mir die Nginx-Dokumentation angesehen und es verwirrt mich immer noch zutiefst.
Wie funktioniert try_files
arbeiten? Folgendes steht in der Dokumentation:
try_files
syntax: try_files pfad1 [pfad2] uri
Standardeinstellung: keine
Kontext: Server, Standort
Verfügbarkeit: 0.7.27
Überprüft, ob Dateien in der richtigen Reihenfolge vorhanden sind, und gibt die erste gefundene Datei zurück. Ein abschließender Schrägstrich kennzeichnet ein Verzeichnis - $ uri /. Wird keine Datei gefunden, wird eine interne Umleitung zum letzten Parameter aufgerufen. Der letzte Parameter ist der Fallback-URI und muss vorhanden sein. Andernfalls wird ein interner Fehler ausgelöst. Im Gegensatz zum Umschreiben werden $ args nicht automatisch beibehalten, wenn der Fallback kein benannter Speicherort ist. Wenn Sie Argumente beibehalten möchten, müssen Sie dies explizit tun:
Ich verstehe nicht, wie die Pfade überprüft werden und was ist, wenn ich keinen internen Fehler haben möchte, aber den Rest des Pfades wieder aufnehmen muss, um eine andere Datei zu finden?
Wenn ich eine zwischengespeicherte Datei unter /path/app/cache/url/index.html
versuchen /path/app/index.php
möchte und wenn es nicht versucht, wie würde ich das schreiben? Wenn ich schrieb:
try_files /path/app/cache/ $uri
include /etc/nginx/fastcgi_params;
fastcgi_pass unix:/var/run/php-fastcgi/php-fastcgi.socket;
fastcgi_param SCRIPT_FILENAME $document_root/index.php;
Ich habe index index.php index.html index.htm;
. Wenn ich besuchen /urlname
, werden versuchen, die Kontrolle /path/app/cache/urlname/index.php
dann /path/app/cache/urlname/index.html
? Wenn wir alles danach ignorieren, try_files
ist es dann möglich try_files
, den Cache-Ordner zu überprüfen? Ich habe es versucht und bin gescheitert.
Hier ist eine weitere praktische Verwendung von try_files als bedingungslose Weiterleitung an benannte Speicherorte. Die benannten Speicherorte fungieren effektiv als Unterprogramme, wodurch eine Verdoppelung des Codes vermieden wird. Wenn das erste Argument für try_files "_" ist, wird immer die Fallback-Umleitung verwendet.
quelle