#### Laravel on Google Compute Engine with Apache2 RewriteEngine on Returns 404

I’m trying to host this website on google cloud using the compute engine and apache2. Since this is a previously established instance, there are a couple websites in there already and a pre configured .conf file as shown below. Uploading files and other stuffs are fine, and the website run smoothly, however i ran into the /public issue in where if the user didn’t enter domain/public they’d be taken to the project directory index page instead.

i have tried creating the .htaccess file inside the laravel root directory, it got rid of the directory index page but it returns 404 instead. I have checked the routes are indeed listed and can be accessed with the /public even after the RewriteEngine on in .htaccess

lamp-server.conf :

<VirtualHost *:80>
DocumentRoot /var/www/html
<Directory /var/www/html/>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog${APACHE_LOG_DIR}/access.log combined
</VirtualHost>


.htaccess :

RewriteEngine on
RewriteCond %{REQUEST_URI} !^public
RewriteRule ^(.*)$public/$1 [L]


404 :

expected result : return the landing page

issue : server return 404 on existing routes without /public after .htaccess RewriteEngine on

question : How do i fix this so it doesnt return 404 without the /public?

Source: Laravel