User57
User57

Reputation: 2505

Laravel 5: How to avoid public folder, trying to open from root in localhost

I'm following the following Structure as I don't want to expose my code to the public.

The folder structure in my localhost is

tbt
    tbt/user/
    tbt/public_html/

where user contains all the folder of root without the public folder and public_html contains the public files.

And I have changed in below lines in public_html/index.php:

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

But when i run the application,

I'm getting Url like localhost/tbt/user/xxxx But it should be localhost/tbt/xxx

I have followed this solution for solving the problem but couldn't solve it as My application is on Laravel 5. Anyone who can help me to find the solution please?

Upvotes: 3

Views: 2844

Answers (3)

Imad Ullah
Imad Ullah

Reputation: 1238

In the root directory of your Laravel project create a file with name .htacess and paste this code in it

<IfModule mod_rewrite.c>
<IfModule mod_negotiation.c>
    Options -MultiViews
</IfModule>

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ ^$1 [N]

RewriteCond %{REQUEST_URI} (\.\w+$) [NC]
RewriteRule ^(.*)$ public/$1 

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ server.php

Upvotes: 1

Mahmood
Mahmood

Reputation: 1197

You can setup a alias in your web server, pointing to your public folder. It's simple but works for me

https://httpd.apache.org/docs/2.4/urlmapping.html

Upvotes: 1

abSiddique
abSiddique

Reputation: 12343

Process 1

  1. Rename the server.php in the your Laravel root folder to index.php
  2. copy the .htaccess file from /public directory to your Laravel root folder.

Process 2

  1. Follow process 1

  2. Update the .htaccess as below

.htaccess look like below

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

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]

Upvotes: 1

Related Questions