eZ Publish - Un blog

Gestionar varios dominios desde un solo administrador

Sábado, 17 de Abril de 2010 - Carlos Revillo

Una de las posibilidades de eZ Publish es la posibilidad de gestionar dos o más sitios webs desde una única instalación del producto. El proceso de configuración es realmente sencillo y solo se requiren unas pequeñas modificaciones en las configuración de la aplicación y en el VirtualHost que hayas definido para tu servidor web.

En este caso, queremos que un único eZ Publish nos sirva para gestionar los dominios dominio1.com y dominio2.com, cuyos contenidos y diseño podrán parecer o ser totalmente distintos. Si estás en una situación parecida, estos son los pasos que puedes seguir.

Crea la estructura de contenido de cada dominio.

Puedes empezar por crear una carpeta para cada uno de los dominios implicados. bajo ellas crearías los contenidos de cada dominios. Debería quedarte algo similar a la siguiente imagen.

img1

Configura el servidor web

La única modificación adicional a la configuración del VirtualHost, es asegurarse de que tenemos un ServerAlias por cada dominio implicado. Así, si hemos elegido que el ServerName sea dominio1.com, bastará con añadir un ServerAlias para el dominio2.com. En nuestro caso trabajamos con Apache.

ServerName www.dominio1.com
ServerAlias www.dominio2.com

Configura eZ Publish para servir varios dominios.

Cada vez que el sistema recibe una petición, una serie de reglas determinan que siteaccess debe ser usado para servirla. Hay tres métodos de acceso, y en función del escogido las peticiones se procesarán de una forma u otra.
Generalmente, el método de acceso usado por defecto es el URI. Un caso típico de uso es tener un sitio multidioma de tal forma que cada siteaccess responda a las peticiones que llegasen desde www.dominio1.com/es, www.dominio1.com/en, www.dominio1.com/fr, etc.
Pero en nuestro caso necesitamos usar el segundo de los métodos, Host. Por tanto, debemos modificar nuestro settings/override/site.ini.append.php.

MatchOrder=host

Mapea los dominios a sus siteaccess.

Es lógico pensar que los dominios tengan diseño y contenido totalmente diferente. Por tanto, lo normal es asignar a cada dominio un siteaccess. De esta forma podremos personalizar su diseño y también controlar quien tendrá acceso a gestionar el contenido de ese site. Usaremos la variable HostMatchMapItems y nos quedará algo tal que así

HostMatchMapItems[]=www.dominio1.com;dominio1
HostMatchMapItems[]=www.dominio2.com;dominio2

De esta forma le estamos diciendo que todas las peticiones a www.dominio1.com serán procesadas según la configuración definida en el siteaccess dominio1 y todas las que llegan a www.dominio2.com lo serán según lo definido en dominio2.

Configura los siteaccess

El proceso no termina aquí. En este momento, si nosotros fuésemos a www.dominio1.com o www.dominio2.com nos saldrá el contenido de la carpeta "Nuestras webs" en ambos casos. Por ello, tenemos que decirle a eZ Publish que cuando se teclee cualquiera de los dos dominios, la página a devolver sea otra. Resolveremos esto haciendo uso de las variables IndexPage y DefaultPage. Empezando por el dominio1, añadiremos en el site.ini.append.php y dentro del grupo SiteSettings:

IndexPage=content/view/full/60
DefaultPage=content/view/full/60

y para el dominio2

IndexPage=content/view/full/61
DefaultPage=content/view/full/61

Los números 60 y 61 son los números de nodo de nuestras carpetas dominio1.com y dominio2.com

Además, debes modificar también o crear si no estaban antes, los archivos content.ini.append.php de ambos siteaccess, para decirle al sistema cual es el nuevo 'RootNode' para cada dominio.

[NodeSettings]
RootNode=60

en el primer caso y

[NodeSettings]
RootNode=61

en el segundo.

No te olvides de la variable PathPrefix

Si navegas ahora por tu www.dominio1.com notarás que las urls no están todo lo finas que debieran. cualquier enlace que fuese a nuestra página de noticias, a las noticias o a los productos serían de la forma www.dominio1.com/dominio1.com/noticias o www.dominio2.com/dominio2.com/productos, en el caso del dominio2. No es lo más óptimo y lo lógico sería devolver direcciones del tipo www.dominio1.com/noticias o www.dominio2.com/noticias. Para solucionarlo podemos hacer uso de la variable PathPrefix, que le servirá al operador ezurl para suprimir una cadena de caracteres de las urls sin que por ello éstas dejen de funcionar.

Por tanto, añadiríamos dentro del grupo SiteAccessSettings del site.ini.append.php del siteaccess dominio1

PathPrefix=dominio1.com

y

PathPrefix=dominio2.com

19 comentarios para “Gestionar varios dominios desde un solo administrador”

  • Kuerbo dijo: Domingo, 18 de Abril de 2010

    Hola.

    Interesante el manejo de configuraciones en ez a través de archivos ini.
    Una pregunta de novato. ¿esto mismo se podría simular a través de secciones?

    Gracias.

  • Fran dijo: Viernes, 18 de Junio de 2010

    Hola,

    qué haces para que www.dominio1.com/nuestras-oficinas no sea visible?

    Saludos, fran

  • Carlos dijo: Viernes, 18 de Junio de 2010

    al ser el root node para dominio1.com la carpeta dominio1.com, nuestras-oficinas no se porque está en otro 'árbol'

  • Israel dijo: Miércoles, 30 de Junio de 2010

    ¿Esto es compatible con que uno o todas las webs sean multiidioma?

  • Carlos dijo: Miércoles, 30 de Junio de 2010

    Sí. puedes formar un english.dominio.com o un spanish.dominio.com

    e incluso puedes llegar a montar un
    www.dominio1.com/es
    www.dominio1.com/en
    www.dominio2.com/es
    www.dominio2.com/en

    pero para eso habría que cambiar alguna cosa de las configuraciones de arriba.

  • Israel dijo: Miércoles, 30 de Junio de 2010

    ¿Qué cambio exactamente? Supongo que tendrá que ver con el "MatchOrder" que mencionaste ¿no?.

    ¿Esto da algún problema con que se tengan las webs en distintas bases de datos?

    ¡¡Gracias por responder!!.

  • Carlos dijo: Miércoles, 30 de Junio de 2010

    Sí. sería cosa de poner
    MatchOrder=uri;host

    y sí. puedes hacerlo todo con la misma base de datos o utilizar una base de datos distinta para cada dominio. a través del site.ini.append.php de cada uno puedes decidir a qué base de datos atacará cada siteaccess.

  • Irish dijo: Domingo, 17 de Julio de 2011

    Thank you so much for this aritlce, it saved me time!

  • nrrfkxcalud dijo: Lunes, 18 de Julio de 2011

    VWpWvf , [url=http://jlirlwyayjuj.com/]jlirlwyayjuj[/url], [link=http://drwgbyzfpdfo.com/]drwgbyzfpdfo[/link], http://pnytmrqdtjxd.com/

  • uaotss dijo: Miércoles, 20 de Julio de 2011

    kWuwh8 <a href="http://gqzjmhszbzau.com/">gqzjmhszbzau</a>

Deja un comentario:

  • eZHumanCAPTCHACode