tutorial server_name name large_client_header_buffers regex nginx webserver

server_name - La ubicación de Nginx "no es igual a" regex



nginx tutorial (3)

¿Cómo configuro una condición de location en Nginx que responde a cualquier cosa que no sea igual a las ubicaciones enumeradas?

Lo intenté:

location !~/(dir1|file2/.php) { rewrite ^/(.*) http://example.com/$1 permanent; }

Pero no desencadena la redirección. Simplemente maneja el URI solicitado usando las reglas en el resto de la configuración del servidor.


De acuerdo con la documentación de nginx

no hay sintaxis para NO coincidir con una expresión regular. En su lugar, haga coincidir la expresión regular de destino y asigne un bloque vacío, luego use la ubicación / para que coincida con cualquier otra cosa

Entonces podrías definir algo así como

location ~ (dir1|file2/.php) { # empty } location / { rewrite ^/(.*) http://example.com/$1 permanent; }


Supongamos que tiene dos ubicaciones, por ejemplo, location1 y location2 , puede intentar seguir la configuración del bloque de ubicación para resolver su problema.

location ~ ^/(location1|location2) { rewrite (.*) http://example.com/$1 permanent; }

Además, el problema al que se enfrenta podría deberse a la secuencia de bloqueo de ubicación múltiple en su configuración. Verifique, en caso de que el bloque de ubicación que viene antes de esto, atienda la solicitud.


estaba buscando lo mismo. y encontré esta solución.

Use la afirmación de expresiones regulares negativas:

location ~ ^/(?!(favicon/.ico|resources|robots/.txt)) { .... # your stuff }

Fuente Negated Regular Expressions en el lugar