2014-02-15 17 views
5

Ich versuche, mehrere Laravel 4-Projekte auf meinen Webserver zu laden, nicht auf meinen Entwicklungsserver. Jede Laravel 4 App ist in einem eigenen Unterverzeichnis untergebracht. Wie sollte meine Dateistruktur sein? Ich habe nach einem htaccess gesucht, um das/public aus der URL zu entfernen, aber ich war nicht erfolgreich. Dieser Server dient nur zu Testzwecken. Er ermöglicht es anderen, während des Projekts mitzuarbeiten. Ich weiß, dass sie große Sicherheitsprobleme haben, wenn man die Laravel-Basisstruktur in diesen Verzeichnissen belässt, aber sie dienen nur zu Testzwecken und wenn die Projekte abgeschlossen sind, werden sie entfernt und auf ihren eigenen Hosting-Server gestellt. Dies ist meine Dateistruktur jetzt:mehrere Laravel 4-Projekte in Unterverzeichnisse installieren

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

wenn i Laravel App in jedem Unterverzeichnis Ordner (www.testsite.com/Store, www.testsite.com/blog, www.testsite.com/newspaper) jede Anwendung funktioniert installieren, aber ich versuche, die Öffentlichkeit am Ende der URL zu entfernen, www.testsite.com/Store/public ist, was im Browser angezeigt wird. Jede Hilfe mit diesem Problem wird sehr geschätzt. Vielen Dank.

+0

Können Sie mir bitte mitteilen, wie die Routen der Laravel App 1 oder anderer laufen? – MKJ

Antwort

3

Verschieben Sie alle Inhalte einschließlich index.php in jedem öffentlichen Verzeichnis zu Store, Blog und Newspaper. und ändern Sie die folgende Zeile ein:

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

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

zu

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

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

viel Glück.

BEARBEITEN: Entschuldigung. Sie haben /bootstrap/paths.php auch zu bearbeiten,

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

zu

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

nur um zu klären. Wenn ich die URL www.testsite.com/Store eintrage, erhalte ich eine Liste der Dateien in diesem Ordner (Index von/Store), wenn ich auf den öffentlichen Ordner klicke, dann wird die Homepage angezeigt, aber sie hat die URL von www.testsite. com/Store/public .... ich versuche, diese öffentlichkeit in der URL zu entfernen. Als ich deinen Vorschlag ausprobierte, bekam ich nur einen leeren Bildschirm. – user3307994

+0

Dies ist auf einem Live-Server kein Entwicklungsserver – user3307994

+0

Antwort bearbeitet. – egig

11

Sieht aus wie meine Entwicklungsstruktur hier ist genau das ändern, was Sie zu tun versuchen. So habe ich diese Struktur Ordner:

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

Das ist mein Virtual Datei /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> 

Ja, ich habe es in meinem Projektordner und fügen Sie umfassen ein in /etc/apache2/apache2.conf :

Include /var/www/Store/vhost.conf 

Dies ist meine .htaccess-Datei:

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

Und ich habe nur

http://server.dev/Store 

oder

http://[ipaddress]/Store 

Um zu sehen, es trifft.

Ich habe ein kleines Skript erstellt, um das alles für mich zu tun: https://github.com/antonioribeiro/laravel-installer. Es lädt, installiert, konfiguriert und bootet eine Laravel-Anwendung in dem Ordner, den ich brauche, und tut alles, was nötig ist. Kompatibel mit Debian basierten Distributionen, wie Ubuntu.

EDIT

Hinweis, dass es zwei Dinge, die die /public und die /index.php aus Ihrer URL zu entfernen:

1) das/Shop direkt zu Ihrem öffentlichen Ordner zeigen:

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

2) und die Überschreibungsregel, um Ihre URL sauber zu halten von der index.php:

+0

+1 .... nur erwähnt es hier, wenn die Projekte verwandt sind, dann Subdomains mit Laravel Domain Route Gruppierung ist viel einfacher. :) – itachi

+0

die Projekte sind nicht verwandt. das ist auf einem Live-Server, nicht auf meinem Entwicklungsserver <- ich habe das richtig eingerichtet. Es ist nur, wenn ich auf den Produktionsserver hochlade, wo ich auf ein Problem stoße. – user3307994

+0

Entwicklung oder nicht spielt keine Rolle (und Ihre ist ein Test-Server), das ist universelle Apache-Konfiguration und es funktioniert, auch wenn Sie es auf einem Produktionsserver verwenden. Wenn Sie möchten, dass wir Ihre Konfiguration überprüfen, sollten Sie Ihre Konfigurationsdateien bereitstellen. Wenn Ihre lokale Konfiguration auf Ihrem Server nicht funktioniert, sieht Ihr Server ziemlich anders aus als Ihr lokaler Server. Sie müssen also die Unterschiede verstehen. Die Konfigurationsdateien, die ich hier gepostet habe, können Ihnen einen Hinweis darauf geben, was Sie tun können, um das '/ public' von Ihren URLs zu entfernen. –