Spojrzałem na dokumentację Nginx i nadal mnie to całkowicie myli.
Jak try_files
działa Oto, co mówi dokumentacja:
try_files
składnia: try_files ścieżka1 [ścieżka2] uri
domyślnie: brak
kontekst: serwer, lokalizacja
dostępność: 0.7.27
Sprawdza istnienie plików w kolejności i zwraca pierwszy znaleziony plik. Końcowy ukośnik wskazuje katalog - $ uri /. W przypadku nie znalezienia pliku wywoływane jest wewnętrzne przekierowanie do ostatniego parametru. Ostatnim parametrem jest zastępczy identyfikator URI i musi on istnieć, w przeciwnym razie zostanie zgłoszony błąd wewnętrzny. W przeciwieństwie do przepisywania, $ args nie są automatycznie zachowywane, jeśli kopia zapasowa nie jest nazwaną lokalizacją. Jeśli chcesz zachować argumenty, musisz to zrobić jawnie:
Nie rozumiem, w jaki sposób sprawdza ścieżki i co zrobić, jeśli nie chcę błędu wewnętrznego, ale czy powinien wznowić resztę ścieżki w celu znalezienia innego pliku?
Jeśli chcę wypróbować plik z pamięci podręcznej /path/app/cache/url/index.html
i jeśli próba się nie powiedzie, /path/app/index.php
jak bym to napisał? Gdybym napisał:
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;
Mam index index.php index.html index.htm;
. Kiedy odwiedzić /urlname
, będzie starał sprawdzanie /path/app/cache/urlname/index.php
potem /path/app/cache/urlname/index.html
? Jeśli po wszystkim zignorujemy, try_files
czy możliwe try_files
jest sprawdzenie folderu pamięci podręcznej? Próbowałem i nie udało mi się.