Eu gostaria de ser redirecionado para todos os URLs quenãocomece com prefixo /abcd/
para -> /abcd/
considerando que o 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/;
}
}
}
Estou pensando em usar regex e negação mais ou menos assim:
location ~ ^/(?!abcd.*).*$ {
return 301 /abcd/;
}
Existe alguma outra/melhor solução?
Responder1
Acho que isso é mais complexo do que você precisa. Nginxavaliado bloco mais específico até o menos específico.
Neste exemplo, qualquer coisa que corresponda a /abcd vai para o bloco proxy_pass, todo o resto vai para o bloco / que é redirecionado.
Eu não testei isso, experimente e se não funcionar posso pensar um pouco mais.
location /abcd {
proxy_pass (etc);
}
location / {
return 301 /abcd/;
}