This is recommended for those, who are using shared hosting and not able to remove public from route.
the easiest and simplest way to remove public
keyword from Laravel routes is follow these steps.
Put all your files and folder except Public
folder, outside
public_html
folder, I mean Root folder of your site.

Then grab all files and folder from Public
folder and put them
into public_html
folder.

once done with this, then create a file (name it, paths.php) into your bootstrap
folder (Laravel folder exists in your root folder) copy below code into paths.php
file
<?php
return array(
'app' => __DIR__.'/../app',
'public' => __DIR__.'/../public_html',
'base' => __DIR__.'/..',
'storage' => __DIR__.'/../app/storage',
);
Now access your website without public
word in URL, if you see error, then try to Hard reload (Ctrl + 5) it. Thats it
Note: This is not the recommended way, in shared hosting, better to ask your Hosting Manager/ re-seller to change your domain mapping on public_html/public
instead public_html
. and if you are using dedicated, cloud hosting then you can change it by yourself in your Virtual Host file.