Making a website on Laravel 7.28. Added a route to ‘routes/web.php‘:
... Route::get('/lk', 'LKIndexController@index')->name('lk'); ... +--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+------------+ | Domain | Method | URI | Name | Action | Middleware | +--------+----------+------------------------+-----------------------------+------------------------------------------------------------------------+------------+ | | GET|HEAD | / | generated::0jR7DUWQf5HIAEoc | IlluminateRoutingViewController | web | | | GET|HEAD | home | home | AppHttpControllersHomeController@index | web | | | | | | | auth | | | GET|HEAD | lk | lk | AppHttpControllersLKIndexController@index | web | | | GET|HEAD | login | login | AppHttpControllersAuthLoginController@showLoginForm | web |
The controller is created in ‘appHttpControllersLKIndexController.php‘. It has a method:
public function index() { return view('lk.index'); }
Created promoter file ‘resourcesviewslkindex.blade.php‘.
When I’m trying to follow the route http://127.0.0.1:8000/lk
. I get an error:
The requested resource /lk was not found on this server.
If I change the ‘lk’ routes to the ‘account’, for example, then at ‘http://127.0.0.1:8000/account’ I get the page correctly.
And it’s not entirely clear why 404 error doesn’t appear in Laravel view? Please help with this issue.Thank.
Advertisement
Answer
Issue:This error occurs when you create a folder/directory in the public
folder with the same name as route slug(lk
here).
Why public folder creating this issue: Any object inside public folder can be accessed via url
(which is also a route).
If you have a directory(folder) with the same name as route mentioned, it will create 404
because /directory
can’t be accessed due to blocking of directory traversal for security reasons but if you use /directory/<a_file_or_image>
it will show you the requested object.
When you have a route with same name as directory inside public folder, it is being override by public path. When you change to another route name, it works fine.
Solution: Either change public folder name or change route slug.