Tengo este bloque de location
dentro de mi sitio web.conf:
location ~ ^/([^/?&:'"]+)$ { try_files $uri @root_path; }
Esta parte del archivo dificulta la ejecución de los archivos php, siempre los sirve como descarga.
Si alguien pudiera dar más detalles estaría muy agradecido.
Un poco más de contexto: estoy probando jitsi-meet y me gustaría agregar alguna funcionalidad basada en php al sitio web.
La expresión regular ^/([^/?&:'"]+)$
coincide con cualquier cosa que comience con /
y contenga cualquier carácter excepto /
, ?
, &
, :
, '
y "
.
El primer carácter es importante, ya que significa que solo coincidirá con los URI que contengan un solo elemento de ruta (p. ej /foo
e /index.php
), pero no con los URI que contengan otro /
(p. ej., /foo/
, /foo/bar
y /foo/index.php
).
Los otros caracteres son probablemente un error como ?
&
es poco probable que una declaración de location
encuentre &, ya que Nginx usa un URI normalizado al que se le ha eliminado la cadena de consulta.
No necesita excluir .php
de esta expresión regular.
Los URI que terminan en .php
generalmente son procesados por otro bloque de ubicación de expresión regular (por ejemplo location ~ \.php$
).
Los bloques de ubicación de expresión regular se evalúan en orden hasta que se encuentra una coincidencia, por lo que debe asegurarse de que el bloque location ~ \.php$
se coloque encima del bloque de ubicación de expresión regular en su pregunta.