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