2014-02-15 82 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'。 –