Este artigo trata do roteamento Laravel não funcionar em instalações novas de projeto, levando em consideração um contexto muito específico, instalações novas do servidor Apache.

Roteiro do problema

Em algum momento você vai iniciar um novo projeto com o recém instalado projeto com o framework Laravel, após executar o comando padrão para criar um novo projeto com composer:

composer create-project laravel/laravel <nome-do-projeto> --prefer-dist

Todas as dependências baixadas e carregadas pelo composer, permissões acertadas nas pastas storage e bootstrap/cache, então, para iniciar o trabalho você faz a inserção de uma rota de testes e um controller para verificação, e eis que o erro 404 (File not found) é retornado.

Passei por este problema e comecei a procurar a causa, após verificar que as rotas estavam corretas usando o artisan na linha de comando:

php artisan route:list

É difícil de verificar o problema pois a listagem de rotas está correta. Então vem o auto questionamento: eu estou errando algo muito simples, não é possível que não funcione.

Próximo passo, executar o dump do composer para limpar cache e refazer o autoload:

composer dump-autoload

Verificar novamente as rotas, além de realizar pequenas alterações, tentei acessar a rota padrão que vem instalada para /home, e eis que ela também retornou o erro 404. Muito bem, indicativa que o problema não era meu código e sim uma possível configuração mal feita.

Solução para o Roteamento Laravel

Como eu havia inicialmente pensado, o problema era simples de resolver, e somente percebi qual era a causa após ler este post no Stackoverflow: Laravel routing does not working.

Eu estou trabalhando com um computador novo, Linux Mint recém instalado, e ainda não havia feito todas as configurações do Apache.

Então, uma possível solução para resolver o problema de roteamento Laravel da versão 5.x ou mais atual é, primeiramente, configurar a sobrescrita de url no Apache, para que o arquivo .htaccess padrão possa funcionar.

Para isso execute no terminal o comando

sudo a2enmod rewrite

Em seguida abra o arquivo de configuração que deve ser encontrado no caminho /etc/apache2/apache2.conf, e encontre o seguinte trecho de código:

<Directory /var/www/>
   Options Indexes FollowSymLinks
   AllowOverride None
   Require all granted
</Directory>

Agora altere a entrada AllowOverride None para AllowOverride All.

Ao fazer isso você define que todos os “sites” instalados em podem realizar a sobrescrita a partir do diretório raiz /var/www.

Salve o arquivo e reinicie o Apache com o comando

sudo service apache2 restart

E é isso, rotas novamente funcionando, em resumo, você precisa configurar o Apache para que o .htaccess de seu projeto possa fazer a sobrescrita de url.

Mantenha-se atualizado

Não esqueça de me seguir no Twitter e assinar o Canal Mazer.dev no Youtube para receber atualizações de novos artigos, vídeo aulas e cursos gratuitos em desenvolvimento e engenharia de software.


Mais sobre Laravel

Conexão de bancos de dados em projeto Laravel com Laradock
A conexão é bem direta e intuitiva com os servidores de bancos de dados MySQL ou Mariadb em um projeto PHP Laravel quando se usa contêineres Docker do projeto Laradock. Porém algumas dicas e lembretes …
Laradock, instalação e configuração
Como instalar e configurar o Laradock, que é, como apresentado no artigo introdutório, um projeto para configuração rápida e simples de ambientes de desenvolvimento de sistemas PHP para web, usando Docker. Neste artigo tutorial, veremos …
Laradock – Containers Docker para seu desenvolvimento PHP e Laravel – Introdução
Laradock é um ambiente de desenvolvimento web completo para Docker, que nasceu para atender o desenvolvimento de sistemas Laravel e atualmente provê containers para diversas situações para o desenvolvimento com PHP. Ele oferece suporte a …
Como resolver erro Laravel class not found em php artisan migrate:rollback
Se você está recebendo o erro class not found ao executar o comando php artisan migrate:rollback em um projeto com o framework Laravel, este artigo mostra como resolver o erro e executar o roolback. Migrations …
Como criar data de Copyright com ano automático em seu blog ou site com PHP, WordPress e Laravel
Adicionar a informação de copyright com o ano atual no rodapé de sites e blogs é importante para passar ao seu público a informação de que o conteúdo que ele encontra está "vivo" e atualizado …
Retornar link para a URL anterior no Laravel
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 …

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *