Environment: Lavel 5.8, PHP 7.3, Apache 2.4, Debian 9.12
Permission
cd /var/www/html/laravel sudo chgrp -R www-data /var/www/html/laravel sudo chmod -R 775 storage bootstrap/cache
Virtual Host
sudo nano /etc/hosts 127.0.0.1 laravel.com
cd /etc/apache2/sites-available sudo nano laravel.conf
Directory is the laravel root and DocumentRoot is pointing to public
<VirtualHost *:80>
ServerName laravel.com
ServerAdmin admin@laravel.com
DocumentRoot /var/www/html/laravel/public
<Directory /var/www/html/laravel>
AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
sudo a2dissite 000-default.conf sudo a2ensite laravel.conf sudo a2enmod rewrite
sudo service apache2 restart
If you want to check the enabled sites:
cd /etc/apache2/sites-enabled
.htaccess
cd /var/www/html/laravel/public sudo mv .htaccess .htaccess.bak sudo nano .htaccess
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
RewriteEngine On
# Redirect Trailing Slashes If Not A Folder…
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]
# Handle Front Controller…
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* — [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
</IfModule>