将多个Laravel 4项目安装到子目录

时间:2014-02-15 14:33:28

标签: php .htaccess laravel-4 subdirectory

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

-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/blogwww.testsite.com/newspaper)中安装laravel应用程序,则每个应用程序都可以正常工作,但是我试图在网址末尾删除公众, www.testsite.com/Store/public是浏览器中显示的内容。非常感谢任何有关此问题的帮助。谢谢。

2 个答案:

答案 0 :(得分:11)

看起来我的开发结构正是你想要做的。所以我有这个文件夹结构:

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

这是我的VirtualHost文件/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:

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)/ Store直接指向您的公共文件夹:

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

2)以及重写规则,以保持您的网址与index.php

保持一致
RewriteRule ^(.*)$ /Store/index.php/?$1 [L]

答案 1 :(得分: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__.'/../',