Search code examples
php.htaccesslaravelwebserverlaravel-4

Avoid public folder of laravel and open directly the root in web server


I was going through all possible sample on internet to solve this. Still it is an headache.

I just want to avoid the 'public' in www.mylaravelsite.com/public/ and make it like www.mylaravelsite.com for the root directory.

Now I do not want to avoid the security concern,So I learned .htaccess would be the best way.

Any solution friends ?

& advance thanks for interacting !


Solution

  • Let's assume you have this folder structure in your server

    .cpanel/
    public_html/
    public_ftp/
    ..
    

    And the laravel folder structure is

    app/
    bootstrap/
    public/
    vendor/
    composer.json
    artisan
    ..
    

    You can create a folder name mylaravelsite on your server inline with public_html and public_ftp folder, and copy to it the whole laravel application except the public folder because you will paste all of it contents on the public_html, so you have now:

    .cpanel/
    public_html/
    public_html/packages
    public_html/vendor
    public_html/index.php
    public_html/.htaccess
    ...
    public_ftp/
    mylaravelsite/
    mylaravelsite/app
    mylaravelsite/bootstrap
    ...
    

    On your public_html/index.php change the following line:

    require __DIR__.'/../bootstrap/autoload.php';
    
    $app = require_once __DIR__.'/../bootstrap/start.php';
    

    to

    require __DIR__.'/../mylaravelsite/bootstrap/autoload.php';
    
    $app = require_once __DIR__.'/../mylaravelsite/bootstrap/start.php';
    

    and also don't forget to change /mylaravelsite/bootstrap/paths.php public path, you might use it.

    'public' => __DIR__.'/../public',
    

    to

    'public' => __DIR__.'/../../public_html',
    

    Your site should be running.