Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/09/2010, 10:15
Avatar de GatorV
GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
[APORTE] Usar subdominios con Zend Framework

Hace poco tuve que hacer un proyecto donde cada subdominio representaba un módulo de Zend, realmente fue una tarea muy sencilla de hacer y aquí les dejo como pueden hacerlo en modo local para que luego lo puedan migrar a su servidor.

Lo primero es configurar en su archivo hosts los subdominios que quieran redirigir a su local:
Código:
127.0.0.1 default.domain.com
127.0.0.1 admin.domain.com
127.0.0.1 user.domain.com
Después en su Apache configuran 3 virtualhosts para esos subdominios y que apunten a la misma carpeta public de su aplicación en Zend.

Después es donde viene lo más sencillo de todo, hay que cambiar el router por defecto a uno que soporte los subdominios, y eso se hace en el bootstrap de una forma sencilla:
Código PHP:
Ver original
  1. protected function _initRoutes()
  2. {
  3.         $this->bootstrap('frontController');
  4.         $front = $this->getResource('frontController');
  5.         $router = $front->getRouter();
  6.         // Importante quitar la ruta default para usar la nuestra
  7.         $router->removeDefaultRoutes();
  8.        
  9.         // con esto hacemos el "match" al subdominio
  10.         $hostNameRoute = new Zend_Controller_Router_Route_Hostname(
  11.                   ':module.domain.com',
  12.                   array(
  13.                           'module' => 'default'
  14.                   )
  15.          );
  16.          // con esta hacemos match de las urls normales
  17.          $normalRoute = new Zend_Controller_Router_Route(
  18.                   ':controller/:action/*',
  19.                   array(
  20.                            'controller' => 'index',
  21.                            'action' => 'index'
  22.                   )
  23.          );
  24.          // la registramos como default en el router
  25.          $router->addRoute('default', $hostNameRoute->chain($normalRoute));
  26. }

Con esto todos nuestros links y demás funcionan normal y se sobreescriben correctamente al subdominio adecuado.

Espero les ayude por sí alguna vez necesitan hacer subdominios y usar Zend Framework.

Saludos.