Como no encadeamento de comentários na primeira resposta, usei:
if ($request_uri = "/foo-bar/") { rewrite ^ … permanent; }
e eu nunca usei
/location/
Na minha configuração do nginx, eu gostaria de pegar / foo / e fazer uma reescrita usando o local, mas ignorar / foo / anything-else
Eu tentei:
location = /foo-bar/ {
e
location ~ ^/foo-bar/$ {
e
location ~ /foo-bar/ {
mas também captura e reescreve
/foo-bar/?t=aaa-bbb-ccc
Como faço para pegar apenas
/foo-bar/
e não
/foo-bar/?t=aaa-bbb-ccc
?
Obrigado.
location = /foo/ {
rewrite ^ … redirect;
}
location ~ /foo/ {
return 404;
}
Se isso não funcionar, deve ser o armazenamento permanente infamous das respostas 301 Moved Permanently
- tente sua solicitação com curl -v
para ter certeza de que funciona ou não, e / ou limpe todo o cache de seu Gecko ou outro navegador (no Gecko não há outra maneira de contornar isso (além de limpar todo o cache) - o truque Shift-refresh não se aplica a 301
).
Atualização: se você também precisa garantir que nenhum argumento seja aceito (por exemplo, / foo /? test), use o seguinte:
location = /foo/ {
if ($args) { return 403; }
rewrite ^ … redirect;
}
Tags nginx