Miré la documentación de nginx y todavía me confunde por completo.
Como try_files
funciona Esto es lo que dice la documentación:
try_files
sintaxis: try_files ruta1 [ruta2] uri
predeterminado: ninguno
contexto: servidor, ubicación
disponibilidad: 0.7.27
Comprueba la existencia de archivos en orden y devuelve el primer archivo que se encuentra. Una barra inclinada final indica un directorio: $ uri /. En el caso de que no se encuentre ningún archivo, se invoca una redirección interna al último parámetro. El último parámetro es el URI de reserva y debe existir, de lo contrario, se generará un error interno. A diferencia de la reescritura, $ args no se conservan automáticamente si el respaldo no es una ubicación con nombre. Si necesita preservar args, debe hacerlo explícitamente:
No entiendo cómo comprueba las rutas y qué pasa si no quiero un error interno, pero ¿debo reanudar el resto de la ruta en un esfuerzo por encontrar otro archivo?
Si quiero probar un archivo en caché /path/app/cache/url/index.html
y si no lo intenta, /path/app/index.php
¿cómo escribiría eso? Si yo escribiera:
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;
Tengo index index.php index.html index.htm;
. Cuando visito /urlname
, ¿se trata de leer /path/app/cache/urlname/index.php
a continuación /path/app/cache/urlname/index.html
? Si ignoramos todo después, ¿ try_files
es posible try_files
verificar la carpeta de caché? He estado intentando y he fallado.
Aquí hay otro uso conveniente de try_files, como redireccionamientos incondicionales a ubicaciones con nombre. Las ubicaciones nombradas actúan efectivamente como subrutinas, ahorrando duplicación de código. Cuando el primer argumento para try_files es "_", siempre se toma la redirección alternativa.
fuente