2010-01-27 16 views
6

Estoy intentando configurar Apache para tener diferentes proyectos symfony (cada uno con su propia instalación del framework) bajo el mismo dominio, pero no puedo hacer que funcione usando carpetas.¿Cómo configurar Apache para que tenga dos proyectos de Symfony en el mismo dominio (sin usar subdominios)?

Esto es lo que me gustaría tener:

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

puedo hacer que funcione uso de subdominios, pero es no es la solución preferida para mí, porque termino teniendo subdominios locos como:

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

estoy usando esta configuración en Apache para que funcione con subdominios:

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

¿Alguna idea sobre cómo lograr la solución de carpetas?

Gracias de antemano, Eneko

+0

esto me es interesante ...realmente prefiero los nombres de dominio "complejos" ;-) De todos modos, ¿cuál es su estrategia esperada para acceder a las aplicaciones individuales en cada proyecto? ¿Es 'backend.domain.com/project' o es más como' domain.com/project/ backend.php'? Eso hará una diferencia en cómo hacerlo, creo. – prodigitalson

+0

la idea es acceder a la aplicación back-end a través de domain.com/project/backend/ – eillarra

Respuesta

0

Puede utilizar el método setWebDir en su ProjectConfiguration para especificar un directorio web única para servir de en cada proyecto. Esto le permitirá alojar los archivos del proyecto (aplicaciones, config, lib, complementos, etc.) en cualquier directorio que desee (/ home/projectone) mientras mueve los archivos normalmente en web/a una ubicación completamente diferente (/ home/mydomain/web/projectone). Usted tiene la opción de ajustar directorio web de toda su proyecto desde su ProjectConfiguration raíces en config/ProjectConfiguration.class.php:

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

o si desea cada una de sus aplicaciones para tener un directorio diferente web (/ projectone/para el front-end y/projectone/backend/para el backend) se puede establecer el directorio web de cada una de las configuraciones de las aplicaciones en apps/myapp/config/myappConfiguration.class.php:

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

Espero que ayude.

1

He intentado este código y parece que funciona. Como no lo he probado, no estoy seguro de que esté libre de errores, pero puede ser una pista para usted.

<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

Hago esto todo el tiempo. Aquí está la configuración de Apache relevante. También configuré custom error handlers para cada aplicación de 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> 

También es necesario cortar esta línea en su archivo web/.htaccess.

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