Redirecionamentos de URL Inteligentes no Symfony 4.1

Andréia Bohner
1 min readMar 25, 2018

--

Historicamente, as URLs seguiram a convenção do UNIX de adicionar barras finais aos diretórios e removê-las ao referir-se a arquivos:

Embora servir conteúdo diferente para /foo e /foo/ seja ok para o Google, atualmente é comum tratar as duas URLs como a mesma URL e redirecioná-las.

Desde o primeiro dia, o Symfony ajudou em um dos dois lados deste problema. Se você definir uma rota com um caminho terminando com uma barra, as duas URLs funcionarão e a URL sem a barra redireciona para a outra:

# config/routes.yaml
foo_route:
path: '/foo/'
controller: App\Controller\DefaultController::foo

Neste exemplo, uma requisição GET /foo/ retorna uma resposta 200 e uma requisição GET /foo retorna um redirecionamento 301 (movido permanentemente) para /foo/. Observe que isso funciona apenas para requisições GET e HEAD.

No Symfony 4.1, as rotas foram aprimoradas para fazer redirecionamentos inteligentes também no outro sentido. Considere esta definição de rota:

# config/routes.yaml
foo_route:
path: '/foo'
controller: App\Controller\DefaultController::foo

Anteriormente ao Symfony 4.1, uma requisição GET /foo/ resultava em uma resposta 404. No Symfony 4.1, resulta em um redirecionamento 301para /foo, fazendo com que a lógica inteligente da barra final funcione nos dois sentidos.

Tradução de: New in Symfony 4.1: Smarter URL redirections

--

--