Em alguns momentos de sua aplicação ou site desenvolvido com o framework Laravel, existe a necessidade de, via um “link”, permitir ao seu usuário voltar ou retornar para a URL - página ou rota, anteriormente chamada.

Isto é comumente necessário ao mostrar uma tela de mensagem de erro do tipo 404 - Page not found, ou 403 - Forbidden (Não autorizado).

Porém, nem sempre é interessante montar este link por meio do History de navegação do browser, que pode ser conseguido pelo método back em Javascript.

O exemplo de código em Javascript para retornar à URL de navegação anterior seria:

history.back()

Como eu disse acima, nem sempre é interessante usar esta função pois nosso usuário pode ter chegado a este ponto do sistema por meio de redirecionamentos, sendo necessário garantir a rota anterior corretamente.

Outro problema está relacionado ao SEO de sua aplicação que pode ser prejudicado se o motor de busca não identificar corretamente os links nas páginas que faz o rastreamento.

Portanto a melhor estratégia é montar este endereço de URL utilizando os componentes que o Laravel fornece ao desenvolvedor.

Você pode montar a URL usando duas estratégias diferentes: no Controller (Controlador) ou diretamente na View (Visão) diretamente no Template Blade. Caso monte no controller você deve passar como uma variável esta informação para a view.

Redirecionar para URL anterior no Controller

Para direcionar o usuário diretamente do controller para a rota anterior, você deverá retornar de uma action deste controlador que enviará ao navegador as informações corretas de redirect.

Esta é uma estratégia que não monta a URL na tela para o usuário, mas atende se você estiver em um fluxo onde sua aplicação necessite tomar a decisão de redirecionar o usuário para a rota anterior.

Utilize para isto ou o helper back():

function actionController()
{
   ...

   // retorna com redirect para a última rota
   return back();
}

Ou ainda utilizando o helper redirect com o método back:

function actionController()
{
   ...

   // retorna com redirect para a última rota
   return redirect()->back();
}

Usando esta estratégia ainda é possível adicionar variáveis de input do usuário para a rota que estará sendo chamada, ou informações de erro:

function actionController()
{
   ...

   // retorna com redirect para a última rota, com Inputs do usuário e Mensagem de Erro
   return redirect()
      ->back()
      ->withInput()
      ->withErrors(['My error message']);
}

Mas se você precisa mostrar a URL ao usuário, para que ele clique na mesma e um mecanismo de busca possa indexar esta informação, faça isto diretamente na View.

Montar URL anterior na View com Blade

Se você deseja montar um link na tela para que o usuário clique e volte à página anteriormente navegada por ele, utilize o helper url que monta corretamente as URLs do seu aplicativo, chamando seu método previous:

<a  href="{{ url()->previous() }}">
    <i class="fa fa-arrow-circle-o-left"></i>
    <span>Voltar</span>
</a>

Assim o usuário poderá clicar no link e o mecanismo de busca poderá montar corretamente a árvore de links de seu site ou aplicação se necessário.