2010-01-27 5 views
6

Ich versuche, Apache zu verschiedenen symfony Projekte (jeweils mit seiner eigenen Installation des Frameworks) unter der gleichen Domäne zu konfigurieren, aber ich kann es nicht mit Ordnern arbeiten.Wie konfiguriert man Apache, um zwei Symfony-Projekte in derselben Domäne zu haben (ohne Subdomains zu verwenden)?

Das ist, was ich haben möchte:

  • mydomain.com/projectone/
  • mydomain.com/projecttwo/

Ich kann es mit Subdomains arbeiten, aber ist nicht die bevorzugte Lösung für mich, weil ich am Ende mit verrückten Subdomains wie:

  • projectone.mydomain.com
  • backend.projectone.mydomain.com
  • projecttwo.mydomain.com
  • backend.projecttwo.mydomain.com

ich diese Konfiguration in Apache bin mit, um es mit Subdomains arbeiten:

<VirtualHost 127.0.0.1:8080> 
    ServerName projectone.mydomain.com 
    DocumentRoot "/home/projectone/web" 
    DirectoryIndex frontend.php 
    <Directory "/home/projectone/web"> 
    Options -Indexes IncludesNOEXEC FollowSymLinks -MultiViews 
    AllowOverride None 
    Allow from All 

    RewriteEngine On 
    # we check if the .html version is here (caching) 
    RewriteRule ^$ index.html [QSA] 
    RewriteRule ^([^.]+)$ $1.html [QSA] 
    RewriteCond %{REQUEST_FILENAME} !-f 
    # no, so we redirect to our front web controller 
    RewriteRule ^(.*)$ frontend.php [QSA,L] 
    </Directory> 

    Alias /sf /home/projectone/lib/vendor/symfony/data/web/sf 
    <Directory "/home/projectone/lib/vendor/symfony/data/web/sf"> 
    AllowOverride All 
    Allow from All 
    </Directory> 
</VirtualHost> 

Irgendeine Idee, wie man die Ordnerlösung erreicht?

Vielen Dank im Voraus, Eneko

+0

das ist interessant für mich ...eigentlich bevorzuge ich selbst "komplexe" Domainnamen ;-) Wie ist die erwartete Start-up-Strategie für den Zugriff auf die einzelnen Apps in jedem Projekt? Ist es "backend.domain.com/project" oder eher "domain.com/project/? backend.php'? Das wird einen Unterschied darin machen, wie du darüber handelst, denke ich. – prodigitalson

+0

Die Idee ist, über domain.com/project/backend/ auf die Backend-App zuzugreifen – eillarra

Antwort

0

können Sie die setWebDir Methode in Project verwenden, um ein einzigartiges Web-Verzeichnis angeben, aus in jedem Projekt zu dienen. Dadurch können Sie die Projektdateien (apps, config, lib, plugins usw.) in einem beliebigen Verzeichnis (/ home/projectone) hosten, während Sie die Dateien normalerweise im Web/an einen völlig anderen Ort verschieben (/ home/mydomain/web/projectone). Sie haben die Möglichkeit, Ihr gesamtes Projektes Web-Verzeichnis aus Ihrem Root Project in config/ProjectConfiguration.class.php Einstellung:

class ProjectConfiguration extends sfProjectConfiguration 
{ 
    public function setup() 
    { 
    $this->setWebDir('/home/mydomain/web/projectone'); 
    } 
} 

oder wenn Sie jede Ihrer Anwendungen mögen ein anderes Web-Verzeichnis haben (/ ProjectOne/für das Front-End und/ProjectOne/backend/für das Backend) können Sie einstellen, das Web-Verzeichnis aus jedem der Anwendungskonfigurationen in apps/myapp/config/myappConfiguration.class.php:

class myappConfiguration extends sfApplicationConfiguration 
{ 
    public function configure() 
    { 
    $this->setWebDir('/home/mydomain/web/projectone'); 
    } 
} 

Hoffnung, das hilft.

1

Ich habe diesen Code ausprobiert und scheint zu funktionieren. Da ich es nicht getestet habe, bin ich mir nicht sicher, ob das fehlerfrei ist, aber es kann ein Hinweis für dich sein.

<VirtualHost 127.0.0.1:8088> 
    Alias /badger /home/amqs/proyectos/sales/nuevo/salesprime/web 
    DocumentRoot "/home/amqs/proyectos/sales/nuevo/salesprime/web" 
    DirectoryIndex frontend_dev.php 
    <Directory "/home/amqs/proyectos/sales/nuevo/salesprime/web"> 
    AllowOverride All 
    Allow from All 
    </Directory> 

    Alias /sales /home/amqs/proyectos/sales/salesprime2/web 
    DocumentRoot "/home/amqs/proyectos/sales/salesprime2/web" 
    DirectoryIndex frontend_dev.php 
    <Directory "/home/amqs/proyectos/sales/salesprime2/web"> 
    AllowOverride All 
    Allow from All 
    </Directory> 

</VirtualHost> 
2

Ich mache das die ganze Zeit. Hier ist die relevante Apache-Konfiguration. Ich habe auch custom error handlers für jede Symfony App eingerichtet.

# make sure your symfony install dir is available 
<Directory "/var/www/symfony1.4"> 
    AllowOverride All 
    Allow from all 
</Directory> 

# each app under http://mysite/myapp gets a section like this 
Alias /myapp/sf "/var/www/symfony1.4/data/web/sf" 
Alias /myapp "/var/www/vhosts/myvhost/sf_apps/myapp/web" 
<Directory "/var/www/vhosts/myvhost/sf_apps/myapp/web"> 
    AllowOverride All 
    Allow from all 
    ErrorDocument 404 /myapp/default/error404 
    ErrorDocument 500 /myapp/myThemePlugin/errors/error500.php 
</Directory> 

Sie müssen auch diese Zeile in Ihrer web/.htaccess Datei hacken.

# uncomment the following line, if you are having trouble 
# getting no_script_name to work 
RewriteBase /myapp 
Verwandte Themen