Gestor de contenidos - Múltiples dominios

Desde el panel de cubic es posible gestionar varias publicaciones, que pueden ser asociadas a diferentes webs (diferentes dominios). En este documento vemos cómo configurar las posibilidades multi-dominio de cubic.

cubic publisher - Gestión de contenidos - Publicaciones

La gestión multi-dominios que veremos aquí está basada en dominios alojados en el mismo servidor virtual mediante Domain Aliases (alias de dominio). Todos los dominios que participan apuntan al mismo servidor virtual.

Esta opción de Alias de dominio la ofrecen la mayor parte de los proveedores de alojamiento. Normalmente uno de los dominios aparecerá como dominio principal y los demás como alias de ese dominio principal.

Ejemplo de uso:

misflores.com
misregalos.com (alias)
misviajes.com (alias)

Todos los dominios resuelven al mismo espacio de alojamiento:
misflores.com/index.htm = misregalos.com/index.htm

Por otra parte tenemos una serie de publicaciones gestionadas por la instalación de cubic del dominio principal. Publicaciones (entre paréntesis el identificador asignado a cada publicación):

Mis Flores (misflores)
Mis Regalos (misregalos)
Mis Viajes (misviajes)
Mis Hoteles (mishoteles)

Objetivo:

Queremos poner en marcha la web misflores.com con los contenidos de la publicación Mis Flores. La web misregalos.com con los contenidos de Mis Regalos. Y la web misviajes.com que tendrá como contenidos los de la publicación Mis Viajes (principal) junto con los de la publicación Mis Hoteles. 

La configuración la hacemos en el fichero:
cubic/config/cubic_config_pub.php

Modificando el array $MAPA_publicaciones_dominios:

$MAPA_publicaciones_dominios = array (
  "misflores" => "misflores.com",
  "misregalos" => "misregalos.com",
  "misviajes" => "misviajes.com",
  "mishoteles" => "misviajes.com"
);

Las reglas que se aplican son:

  • Una publicación sólo puede estar asociada a un dominio. 
  • Varias publicaciones pueden estar asociadas al mismo dominio. En ese caso la publicación principal (publicación por defecto para ese dominio) es la primera que aparece en la lista. 

Cuando el usuario escribe la dirección de alguna de las webs, cubic comprueba a qué dominio se hace la petición y carga la publicación correspondiente

Por ejemplo, para el dominio misflores.com se carga la publicación Mis Flores.

Para el dominio misviajes.com se carga la publicación Mis Viajes.

Para cargar la publicación Mis Hoteles (mishoteles) el usuario debe indicarlo de forma explícita:
cubic/ap/cubic.php?pub=mishoteles
o también
cubic/ap/cubic.php/pub/mishoteles/plantilla.htm

Esto no es necesario ya que normalmente en la publicación principal de misviajes.com habrá enlaces (p.e. desde menús) apuntando a la publicación secundaria, para que el usuario pueda acceder fácilmente a la publicación secundaria. Es decir, el acceso a las publicaciones secundarias será siempre (excepto casos muy especiales) a través de la publicación principal.

Finalmente, para cargar las publicaciones desde el raíz del dominio (es decir, cuando el usuario teclee por ejemplo http://www.misflores.com) podemos utilizar por ejemplo directivas mod_rewrite en servidoresapache. Ejemplo de fichero .htaccess en el raíz del dominio:

Options +FollowSymlinks
RewriteEngine on
RewriteBase /

RewriteRule ^$ cubic/ap/cubic.php [L,NC]

También se puede utilizar un fichero index.php que se encargue de cargar la publicación correspondiente. Por ejemplo, una posible configuración:

<?php

    //// Obtener el dominio actual (URL)
    $currentDomain = $_SERVER['SERVER_NAME'];
   
    $url_temp ='';

    ////  extremadura-turismo.es
    $pos = strpos ($currentDomain, 'misflores.com');
    if ($pos!==false) {
       $url_temp = "http://www.misflores.com/cubic/ap/cubic.php";  
    } 
   
    ....
   
    $ch = curl_init();
    $timeout = 30; // set to zero for no timeout
    curl_setopt ($ch, CURLOPT_URL, $url_temp);
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    $file_contents = curl_exec($ch);
    curl_close($ch);

    // display file
    echo $file_contents;   
    die;   

?>