php - Laravel Asset Path Issue
I am working on laravel project using Laravel 8 with bootstrap UI. I integrated my bootstrap template locally and all my assets are located in folder public/assets.
In my blade file, I am using the asset method to automatically provide the full path to my CSS or js files
<!-- Vendor CSS Files -->
<link href="{!!asset('vendor/bootstrap/css/bootstrap.min.css')!!}" rel="stylesheet">
<link href="{!!asset('vendor/font-awesome/css/font-awesome.min.css')!!}" rel="stylesheet">
<link href="{!!asset('vendor/modal-video/css/modal-video.min.css')!!}" rel="stylesheet">
<link href="{!!asset('vendor/owl.carousel/assets/owl.carousel.min.css')!!}" rel="stylesheet">
<link href="{!!asset('vendor/aos/aos.css')!!}" rel="stylesheet">
It's working fine locally at http://127.0.0.1:8000/
But when I deploy the project over my server, it could not find my assets files. Gives the error of not found / file doesn't exist. But if I add string public before assets then it works. Like
public/assets/vendor/bootstrap/css/bootstrap.min.css
The issue is that I don't want to change things before deploying to the server. Is there a way laravel automatically adjusts the assets path locally as well as on the server too? Otherwise, I have to make changes in some files to make it work with server environment
My htaccess file, Just in case:
<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
Options -MultiViews -Indexes
</IfModule>
RewriteEngine On
# Handle Authorization Header
RewriteCond %{HTTP:Authorization} .
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# Redirect Trailing Slashes If Not A Folder...
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} (.+)/$
RewriteRule ^ %1 [L,R=301]
# Send Requests To Front Controller...
RewriteCond %{REQUEST_URI} !(\.css|\.js|\.png|\.jpg|\.gif|robots\.txt)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/public/
RewriteRule ^(css|js|images)/(.*)$ public/$1/$2 [L,NC]
</IfModule>
Answer
Solution:
<link href="{{ asset('vendor/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
Try this way and check is it working or not
Answer
Solution:
First, set your ASSET_URL on .env files (production server)
ASSET_URL=http://yourwebsite.com/public
Second, use asset() function to your blade file. For example your bootstrap CSS file :
<link href="{{ asset('vendor/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
Source