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

use*_*994 5 php .htaccess subdirectory laravel-4

我正在尝试将多个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
Run Code Online (Sandbox Code Playgroud)

如果我在每个子目录文件夹(www.testsite.com/Store,)中安装laravel应用程序www.testsite.com/blog,www.testsite.com/newspaper每个应用程序都可以工作,但是我试图删除网址末尾的公共,www.testsite.com/Store/public是浏览器中显示的内容.非常感谢任何有关此问题的帮助.谢谢.

Ant*_*iro 11

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

var
|-- www
    |-- Store
    |    |-- app 
    |    |-- bootstrap 
    |    |-- ...
    |-- blog
         |-- app 
         |-- bootstrap 
         |-- ...
Run Code Online (Sandbox Code Playgroud)

这是我的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>
Run Code Online (Sandbox Code Playgroud)

是的,我将它放在我的项目文件夹中并在/etc/apache2/apache2.conf中添加一个include:

Include /var/www/Store/vhost.conf
Run Code Online (Sandbox Code Playgroud)

这是我的.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>
Run Code Online (Sandbox Code Playgroud)

我只需要击中

 http://server.dev/Store
Run Code Online (Sandbox Code Playgroud)

要么

 http://[ipaddress]/Store
Run Code Online (Sandbox Code Playgroud)

看见了.

我已经构建了一个小脚本来为我做这一切:https://github.com/antonioribeiro/laravel-installer.它可以在我需要的任何文件夹中下载,安装,配置和启动Laravel应用程序,执行必要的操作.兼容基于Debian的发行版,如Ubuntu.

编辑

请注意,有两件事会从您的网址中删除/public/index.php:

1)/ Store直接指向您的公用文件夹:

Alias /Store "/var/www/Store/public"
Run Code Online (Sandbox Code Playgroud)

2)和重写规则,以保持您的网址清除index.php:

RewriteRule ^(.*)$ /Store/index.php/?$1 [L]
Run Code Online (Sandbox Code Playgroud)


egi*_*gig 3

将每个公共目录中包含的所有内容index.php分别移动到商店、博客和报纸。并更改以下行:

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

$app = require_once __DIR__.'/../bootstrap/start.php';
Run Code Online (Sandbox Code Playgroud)

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

$app = require_once __DIR__.'/bootstrap/start.php';
Run Code Online (Sandbox Code Playgroud)

祝你好运。

编辑:抱歉。/bootstrap/paths.php您还必须编辑、更改

 'public' => __DIR__.'/../public',
Run Code Online (Sandbox Code Playgroud)

'public' => __DIR__.'/../',
Run Code Online (Sandbox Code Playgroud)