2014-02-15 56 views
5

我试图将多个Laravel 4项目上传到我的Web服务器,而不是我的开发服务器。每个laravel 4应用程序都位于他们自己的子目录中。我的文件结构应该如何?我搜索了一个htaccess来从网址中删除/ public,但我一直不成功。此服务器仅用于测试目的,它允许其他人在项目正在构建时跟随。我知道他们是将laravel基础结构留在这些目录中的主要安全问题,但它们又仅仅用于测试目的,当项目完成时,它们被移除并放置在它们自己的托管服务器上。这是我现在的文件结构:将多个Laravel 4项目安装到子目录

-public_html/ 
main website html files 
      -Test Site Subdirectory Folder 
      -subdirectoryFolder 
      -Store/ 
      -laravel app 1 
     -blog/ 
     -laravel app 2 
     -newspaper 
     -laravel app 3 

,如果我每个子目录中的文件夹(www.testsite.com/Storewww.testsite.com/blog,​​)每个应用工程安装laravel的应用程序,但我想在URL的末端,除去公众,www.testsite.com/Store/public是什么在浏览器中显示。任何有关这个问题的帮助,不胜感激。谢谢。

+0

可以请让我知道如何运行laravel应用程序1或其他人的路线? – MKJ

回答

3

将每个公共目录中的所有内容分别包括index.php分别移动到Store,Blog和Newspaper。并更改以下行:

require __DIR__.'/../bootstrap/autoload.php'; 

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

require __DIR__.'/bootstrap/autoload.php'; 

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

好运。

编辑:对不起。你必须编辑/bootstrap/paths.php为好,改变

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

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

只是为了澄清。当我输入网址www.testsite.com/Store时,当我点击公共文件夹,然后主页显示,但它具有www.testsite的URL时,我得到该文件夹​​中的文件列表(索引/ Store)。 COM /商店/公共....我试图删除该网址中的公众。当我尝试你的建议时,我只是有一个空白的屏幕。 – user3307994

+0

这是一个活的服务器而不是开发服务器 – user3307994

+0

Answerted editted。 – egig

11

看起来像我的开发结构,这里是你想要做什么。所以我有这样的文件夹结构:

var 
|-- www 
    |-- Store 
    | |-- app 
    | |-- bootstrap 
    | |-- ... 
    |-- blog 
     |-- app 
     |-- bootstrap 
     |-- ... 

这是我的虚拟主机文件/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> 

是的,我把它放在我的项目文件夹,并添加/etc/apache2/apache2.conf中的包括:

Include /var/www/Store/vhost.conf 

这是我的.htaccess文件:

<IfModule mod_rewrite.c> 
    #Options -MultiViews 
    RewriteEngine On 
    RewriteBase/
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /Store/index.php/?$1 [L] 
</IfModule> 

而我只是打

http://server.dev/Store 

http://[ipaddress]/Store 

看到它。

我已经构建了一个小脚本来完成所有这些工作:https://github.com/antonioribeiro/laravel-installer。它可以在需要的任何文件夹下载,安装,配置和引导Laravel应用程序,并执行任何必要的操作。与基于Debian的发行版(如Ubuntu)兼容。

编辑

注意,有两件事情是去掉/public/index.php从您的网址:

1)/商店直接指向您的公共文件夹:

Alias /Store "/var/www/Store/public" 

2 )和重写规则,以保持您的url清洁index.php

RewriteRule ^(.*)$ /Store/index.php/?$1 [L] 
+0

+1 ....只是在这里提到它,如果项目是相关的,那么使用laravel域路由分组制作子域会容易得多。 :) – itachi

+0

该项目是不相关的。这是在一个活的服务器上,而不是我的开发服务器< - 我的设置正确。只是当我上传到生产服务器时,我遇到了问题。 – user3307994

+0

开发与否并不重要(你的是一个测试服务器),这是通用的Apache配置,即使你在生产服务器上使用它,它也能工作。如果你想让我们检查你的配置,你应该提供你的配置文件。如果您的本地配置在您的服务器上不起作用,看起来您的服务器与您的本地服务器有很大不同,所以您必须了解这些差异。我在这里发布的这些配置文件可以给你一些暗示你可以做些什么来从你的url中删除'/ public'。 –