I'm trying to upload multiple Laravel 4 projects to my web server, not my development server. Each laravel 4 app is housed in their own subdirectory. How should my file structure be? I've searched around for a htaccess to remove the /public from the url but i've been unsuccessful. this server is for testing purposes only, it allows others to follow along as the project is being built. I know their are major security issues with leaving the laravel base structure in these directories, but again they are just for testing purposes and when the projects are complete they are removed and placed on their own hosting server. This is my file structure now:
-public_html/
main website html files
-Test Site Subdirectory Folder
-subdirectoryFolder
-Store/
-laravel app 1
-blog/
-laravel app 2
-newspaper
-laravel app 3
if i install laravel app in each subdirectory folder (www.testsite.com/Store
, www.testsite.com/blog
, www.testsite.com/newspaper
) each application works, however I am trying to remove the public at the end of the url, www.testsite.com/Store/public
is what is shown in the browser. Any help with this problem is greatly appreciated. Thank you.
move all content include index.php
in each public directory to Store, Blog and Newspaper respectively. and change the following line:
require __DIR__.'/../bootstrap/autoload.php';
$app = require_once __DIR__.'/../bootstrap/start.php';
to
require __DIR__.'/bootstrap/autoload.php';
$app = require_once __DIR__.'/bootstrap/start.php';
good luck.
EDIT: Sorry. You have to edit /bootstrap/paths.php
as well, change
'public' => __DIR__.'/../public',
to
'public' => __DIR__.'/../',
Looks like my development structure here is exactly what you're trying to do. So I have this folder structure:
var
|-- www
|-- Store
| |-- app
| |-- bootstrap
| |-- ...
|-- blog
|-- app
|-- bootstrap
|-- ...
This is my VirtualHost file /var/www/Store/vhost.conf
:
Alias /Store "/var/www/Store/public"
<Directory /var/www/Store>
Options Indexes Includes FollowSymLinks MultiViews
AllowOverride AuthConfig FileInfo Indexes
Order allow,deny
Allow from all
</Directory>
Yeah, I put it in my project folder and add an include in /etc/apache2/apache2.conf:
Include /var/www/Store/vhost.conf
This is my .htaccess file:
<IfModule mod_rewrite.c>
#Options -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /Store/index.php/?$1 [L]
</IfModule>
And I just have to hit
http://server.dev/Store
or
http://[ipaddress]/Store
To see it.
I've built a small script to do all that for me: https://github.com/antonioribeiro/laravel-installer. It downloads, installs, configures and boot a Laravel application in whatever folder I need to, doing whatever is necessary. Compatible with Debian based distros, like Ubuntu.
EDIT
Note that there are two things that remove the /public
and the /index.php
from your url:
1) the /Store pointing directly to your public folder:
Alias /Store "/var/www/Store/public"
2) and the rewriting rule to keep your url clean from the index.php
:
RewriteRule ^(.*)$ /Store/index.php/?$1 [L]