Utilizar dominios en Multisitio de WordPress

¿En qué casos puede ser interesante utilizar la opción multisitio?

CASO 1: Vamos a crear múltiples sitios o blogs en subdominios de su dominio principal. Por ejemplo el dominio principal podría ser blog-ecommerce.com y tener como sitios los subdominios odoo.blog-ecommerce.com, magento.blog-ecommerce.com y wordpress.blog-ecommerce.com. Todo quedaría en la misma instalación y base de datos del dominio principal blog-ecommerce.com.

CASO 2: Vamos a crear múltiples sitios o blogs en diferentes dominios, pero todo en una misma instalación y base de datos de wordpress. Por ejemplo un dominiol podría ser blog-ecommerce.com y tener otros dominios como sbdinternet.com.

CASO 3: Vamos a crear una combinación de los dos casos anteriores, por ejemplo. un dominio principal en blog-ecommerce.com con blogs separados para la odoo y magento en odoo.blog-ecommerce.com y magento.blog-ecommerce.com, y otro blog en tuerpsinlicencias.sbdinternet.com.

 

Pasos a seguir:

PASO 1: Partiendo de la base de que tenemos una instalación de wordpress ya funcionando en el dominio principal, nos dirigimos al directorio raíz y en el archivo wp-config.php despues de $table_prefix = ‘wp_’; que está más o menos en la línea 66, añadimos lo siguiente:

/* Multisite */
define( ‘WP_ALLOW_MULTISITE’, true );

 

PASO 2: Desactivamos temporalmente todos los plugins que tenemos instalados en wordpress y una vez hecho esto nos dirigimos en nuestra instalación de wordpress a Herramientas -> Configuración de la red

 

PASO 3: Creamos nuestra red (Nos sugerirá un Título para la red y un e-mail que podemos modificar, y luego hemos Instalar) , y nos mostrará las modificaciones exactas que tenemos que incorporar a los archivos wp-config.php y .htaccess:

Un ejemplo sería:

Añade lo siguiente a tu archivo wp-config.php en /var/www/clients/client0/web8/web/por encima de la línea que dice /* ¡Eso es todo, deja de editar! Disfruta publicando. */:

define(‘MULTISITE’, true);
define(‘SUBDOMAIN_INSTALL’, true);
define(‘DOMAIN_CURRENT_SITE’, ‘reparacioniphonebarcelona.com’);
define(‘PATH_CURRENT_SITE’, ‘/’);
define(‘SITE_ID_CURRENT_SITE’, 1);
define(‘BLOG_ID_CURRENT_SITE’, 1);

Añade lo siguiente a tu archivo .htaccess en /var/www/clients/client0/web8/web/, remplazando cualquier otra regla de WordPress:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ – [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

Cerramos sesión y volvemos a entrar con nuestro usuario admin, y hemos de ver la red Mis sitios en nuestra instalación.

 

PASO 4: A continuación hemos de instalar el plugin WordPress MU Domain Mapping. Una vez instalado hay que mover el archivo «Sunrise.php» a la carpeta «wp-content» y editar el archivo «wp-config.php» añadiendo debajo de las lineas que hemos añadido anteriormente, lo siguiente:

/* Activamos sunrise del plugin para multisite multidominio */
define( ‘SUNRISE’, ‘on’ );

 

PASO 5. Ahora vamos a crear tantos sitios como dominios queramos, en nuetro caso necesitamos 2, para ello vamos a Mis sitios > Administrador de red > Sitios. Como veis hay uno creado para «dominio1», así que sólo deberemos crear «dominio2». Seleccionamos la opción «Añadir nuevo» y lo añadimos con el nombre «dominio2». Si os fijais tras el nombre del sitio aparece «.dominio1» y no se puede modificar, pero no pasa nada más adelante lo haremos, rellenamos los demás campos y listo. En el listado de dominios a la derecha hay una columna llamada «Mapping», que de monento estará en blanco.

La cuestión es que tenemos que crear el sitio dominio2.dominio1.com 

 

PASO 6:  Nos dirigimos a Mis sitios > Administrador de red > Ajustes > Domain Mapping. Allí pondremos la dirección IP de nuestro servidor (generalmente en el panel de control de nuestro servidor nos informan de ello). La opción CNAME no es necesaria si ya hemos puesto la IP, y de las opción de debajo donde pone Domain Options marcamos lo que nos interese:

  1. Remote Login: Útil si necesitas accesso para administrar los dos sitios web a la vez. Las páginas de inicio de sesión de todos los sitios redirigan al sitio principal (dominio1) al hacer el login. La ventaja de esto es que cuando se conecta en un sitio, se inicia sesión en todos ellos. La desventaja es que la URL del login cambia a otro dominio con el fin de iniciar sesión.
  2. Permanent redirect, (better for your blogger’s pagerank): Esto hace que sus sitios subdominio o subdirectorio redirigan a sus dominios. Dejarlo marcado, es mejor para el posicionamiento.
  3. User domain mapping page: Permite desactivar Ajustes > Domain Mapping que el usuario utiliza. Active esta opción si desea que los usuarios sean capaces de poner en sus propios dominios para mapear.
  4. Redirect administration pages to site’s original domain (remote login disabled if this redirect is disabled): con esta opción activada, si un usuario visita el escritorio en un dominio mapeado (dominio2) será redirigido al escritorio del dominio no mapeado (dominio1). Si no deseas esto, la opción 1 (Remote login) debe estar desactivada por razones de seguridad. Hace que todas las páginas de administración aparezcan en el dominio original (dominio1) en lugar de en los nuevos dominios. Se necesita habilitar está opción, para trabajar con la opción 1 (Remote Login).
  5. Disable primary domain check. Sites will not redirect to one domain name. May cause duplicate content issues.)
    En mi caso sólo seleccionaré las opciones 2 y 3 (es decir para cada dominio deberé conectarme desde su dominio1/wp-admin, dominio2/wp-admin)

En mi caso para la instalación con que nos atañe (Debian 9, ISPConfig 3, Apache y Letsencrypt) he dejado marcadas las opciones 2 y 3.

 

PASO 7: Nos dirigimos a Mis sitios > Administrador de red > Ajustes > Domains, y aquí en New Domain rellenamos los campos para hacer el mapeo.

Site ID: este código nos lo da WordPress en el paso 5 al crear los sitios y pasar por encima del nombre veremos la ruta http://www.dominio1.com/wp-admin/network/site-info.php?id=3.  El número final es el que debemos introducir en este campo, en el ejemplo el número 3.
Domain: aquí escribimos el dominio que queremos vincular (en nuetro caso www.dominio2.com)

 

PASO 8: De nuevo nos dirigimos a Mis sitios > Administrador de red > Sitios y veremos que en la columna derecha de «Mapping» (la habiamos visto en el paso 5) donde ya aparece el nuevo dominio que hemos añadido. Ahora vamos a editar el sitio y cambiar el campo «Dominio» por el dominio correcto www.dominio2.com.

 

Detalles a tener en cuenta para que funcione con la configuración Debian 9, ISPConfig 3, Apache y Letsencrypt:

ISPCONFIG: En ISPConfig 3 hemos de tener creados el o los Aliasdomain correspondientes que apunten al dominio principal en Websites -> Aliasdomain for website, con la siguiente configuración:

Domain: dominio2.com
Parent Website: Seleccionamos el dominio principal dominio1.com
Redirect Type: Seleccionamos No flag
Redirect Path: Dejamos en blanco
Auto-Subdomain: Seleccionamos *.
SEO Redirect: Seleccionamos No redirect
Don’t add to Let’s Encrypt certificate: Dejamos desmarcado
Active: Dejamos Marcado

 

ENTRADAS DNS:

Hemos de ir al registrador de nuestro dominio, y añadir las zonas dns de los subdominios creados en el paso 6. Un ejemplo seria registrar una entrada CNAME dominio2 que apunte a dominio1.com.

Con esto el subdominio dominio2.dominio1.com apuntaría a la ip de nuestro servidor.

 

Los siguiente pasos normalmente no son necesarios, solo seguirlos si se sabe lo que estamos haciendo:

CERTIFICADO LET’S ENCRYPT:

En alguna ocasión he tenido que crear manualmente el archivo Let’s Ecrypt de dominio2.com para que funcione con el dominio2 con el protocolo https. Para ello hemos de tener acceso root al servidor. Para ello he utilizado el siguiente comando:

sudo certbot –apache -d dominio2.com

 

APACHE:

También puede que tengamos que modificar el archivo de configuración de apache de nuestro servidor en la ruta /etc/apache2/sites-available/dominio2.com.vhost incorporando los serveralias correspondientes y la ruta a los certificados creados manualmente.