Me gustaría ser redirigido a todas las URL quenocomience con el prefijo /abcd/
a -> /abcd/
considerando que el servidor usa proxy_pass
.
server {
location / {
proxy_pass http://upstream-server/;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
if ($request_uri = "/"){
return 301 /abcd/;
}
}
}
Estoy pensando en usar expresiones regulares y negación algo como esto:
location ~ ^/(?!abcd.*).*$ {
return 301 /abcd/;
}
¿Existe alguna otra/mejor solución?
Respuesta1
Creo que eso es más complejo de lo necesario. nginxevalúadesde el bloque más específico hasta el menos específico.
En este ejemplo, todo lo que coincida con /abcd va al bloque proxy_pass, todo lo demás va al bloque / que se redirige.
No lo he probado, inténtalo y si no funciona puedo pensar un poco más.
location /abcd {
proxy_pass (etc);
}
location / {
return 301 /abcd/;
}