This article deals with the Laravel routing not to working in new projects, taking into account a very specific context, when you have new Apache server installations.

Problem script

At some point you will start a new project with the newly installed project with the Laravel Framework, after running the standard command to create a new composer project:

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

All dependencies downloaded and loaded by the compose, hosted permissions on the storage and bootstrap/cache folders, so to start the work you enter a test route and a checking controller, and here’s the error 404 (File Not Found) is returned.

I went through this problem and started looking for the cause, after verifying that the routes were correct using artisan on the command line:

php artisan route:list

It is difficult to check the problem because the list of route is correct. Then comes the self-questioning: I am wrong something very simple, it is not possible that it does not work.

Next step, run the composer dump to clean cache and redo the composer autoload:

composer dump-autoload

Check the routes again, in addition to making minor changes, I tried to access the default route that is installed to /home, and behold it also returned the error 404. Very well, indicative that the problem was not my code but a possiblepoorly made configuration.

Solution for Laravel Routing

As I had initially thought, the problem was simple to solve, and I only realized what was the cause after reading this post at Stackoverflow: Laravel routing does not working.

I am working with a new computer, Linux Mint newly installed, and had not yet done all Apache settings.

So a possible solution to solve the Laravel 5.x or more current versioning problem is first to configure the URL overpacking on Apache so that the standard .htaccess file can work.

To do this execute the command at the terminal

sudo a2enmod rewrite

Then open the configuration file that should be found on the way /etc/apache2/apache2.conf, and find the following code passage:

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

Now change the input AllowOverride None to AllowOverride All.

By doing this you define that all the “sites” installed in can perform the override from the root directory /var/www.

Save the file and restart the apache with the command

sudo service apache2 restart

And that’s it, routes again working, in summary, you need to configure Apache so that the .htaccess of your project can do the URL rewrite.