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
}