2010-01-27 6 views
6

J'essaie de configurer Apache pour avoir différents projets symfony (chacun avec sa propre installation du framework) sous le même domaine, mais je n'arrive pas à l'utiliser avec des dossiers.Comment configurer Apache pour avoir deux projets symfony dans le même domaine (sans utiliser de sous-domaines)?

C'est ce que je voudrais avoir:

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

Je peux le faire fonctionner à l'aide des sous-domaines, mais est pas la solution préférée pour moi, parce que je finis par avoir des sous-domaines comme fou:

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

J'utilise cette configuration Apache pour le faire fonctionner avec des sous-domaines:

<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> 

Une idée sur la façon d'atteindre la solution de dossiers?

Merci à l'avance, Eneko

+0

c'est intéressant pour moi ...En fait, je préfère les noms de domaine «complexes» moi-même ;-) Quoi qu'il en soit, quelle est votre stratégie pour accéder aux applications individuelles dans chaque projet - est-ce 'backend.domain.com/project' ou est-ce plus comme' domain.com/project/ backend.php'? Cela fera une différence dans la façon dont vous y parviendrez je pense. – prodigitalson

+0

l'idée est d'accéder à l'application backend via domain.com/project/backend/ – eillarra

Répondre

0

Vous pouvez utiliser la méthode setWebDir dans votre ProjectConfiguration pour spécifier un répertoire Web unique pour servir de chaque projet. Cela vous permettra d'héberger les fichiers du projet (apps, config, lib, plugins, etc) dans n'importe quel répertoire (/ home/projectone) tout en déplaçant les fichiers normalement dans web/dans un emplacement complètement différent (/ home/mydomain/web/projectone). Vous avez la possibilité d'ajuster votre répertoire web de projet complet de votre ProjectConfiguration racine dans config/ProjectConfiguration.class.php:

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

ou si vous souhaitez chacune de vos applications d'avoir un répertoire web différent (/ ProjectOne/pour le front-end et/ProjectOne/backend/pour le back-end), vous pouvez définir le répertoire web à partir de chacune des configurations d'application dans apps/myapp/config/myappConfiguration.class.php:

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

espoir qui aide.

1

J'ai essayé ce code et semble fonctionner. Puisque je ne l'ai pas testé, je ne suis pas sûr que ce soit sans erreur, mais cela peut être un indice pour vous.

<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

Je fais cela tout le temps. Voici la configuration Apache pertinente. J'ai également mis en place custom error handlers pour chaque application symfony.

# 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> 

Vous devez également pirater cette ligne dans votre fichier web/.htaccess.

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