Iniciante Fundamentos

Reescrita de URLs com rewrite

A diretiva rewrite muda a URL da requisição usando expressões regulares. Ela é mais poderosa que o return, pois permite capturar partes da URL.

Sintaxe básica

A rewrite recebe um padrão regex e o destino:

rewrite ^/blog/(.*)$ /artigos/$1 last;

O (.*) captura o que vier depois de /blog/ e o $1 reusa esse trecho no destino.

As flags

No final da rewrite você coloca uma flag que define o comportamento:

  • last: aplica a reescrita e procura um novo location para a URL nova.
  • break: aplica a reescrita e para de processar regras naquele bloco.
  • redirect: envia um redirecionamento 302 para o navegador.
  • permanent: envia um redirecionamento 301.
location / {
    rewrite ^/produto/(\d+)$ /produto.php?id=$1 last;
}

last vs redirect

Use last ou break para reescritas internas, invisíveis ao usuário. Use redirect ou permanent quando quiser que o navegador mude de URL visivelmente.

Prefira return quando possível

Para redirecionamentos simples, o return é mais rápido e claro. Reserve o rewrite para casos que exigem captura com regex.

Resumo

O rewrite reescreve URLs com regex e usa $1, $2 para capturas. As flags last e break fazem mudanças internas; redirect e permanent redirecionam o navegador.