¿Cómo usar WordPress Multisite con diferentes nombres de dominio?

3 ene 2017, 13:30:30
Vistas: 55K
Votos: 36

Quiero trabajar con WordPress multisite, pero quiero poder usar mis propios nombres. Por ejemplo, mi sitio principal se llama example.com. Si quiero agregar un nuevo sitio a mi red multisite, se llamará newsite.example.com. Quiero que sea newsite.com sin example. ¿Hay alguna manera de lograr esto?

He oído hablar sobre el mapeo de dominios con un plugin, pero no sé si esto es relevante para esta pregunta. Si es relevante, me gustaría saber exactamente qué es esto.

1
Comentarios

Vale la pena mencionar que para hacer esto sin un plugin necesitarás tener una IP dedicada, al menos eso es lo que he entendido.

Neal Jones Neal Jones
10 feb 2017 18:52:36
Todas las respuestas a la pregunta 3
3
35

Parece que siempre hay un poco de confusión sobre este tema. Quizás WordPress podría hacer un mejor trabajo guiando a sus usuarios en este proceso. Aunque, supongo que Multisite no estaba destinado a ser usado para TLDs.

Así que, primero que nada, yo instalaría WordPress, configuraría multisite, y lo configuraría como una red de subdominios.

Aquí tienes una configuración de ejemplo para tu archivo wp-config.php en el directorio base de tu instalación de WordPress:

/* Multisite */
define( 'WP_ALLOW_MULTISITE', true );
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', true );
define( 'DOMAIN_CURRENT_SITE', 'www.dominio-principal.ejemplo' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );

Luego, aquí está la configuración básica para tu archivo .htaccess como configuración de subdominio, en el directorio base de tu instalación de WordPress:

# Inicio de WordPress

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

# añade una barra diagonal al final de /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]

# Fin de WordPress

Ahora, para que los TLDs funcionen correctamente, he tenido que hacer algunas configuraciones adicionales al archivo wp-config.php como estas:

define( 'COOKIE_DOMAIN', '' );
define( 'ADMIN_COOKIE_PATH', '/' );
define( 'COOKIEPATH', '/' );
define( 'SITECOOKIEPATH', '/' );

Eso es todo con las configuraciones específicas de WordPress.

Personalmente, me gusta tener un Virtual Host de Apache para el dominio principal en la red y luego configurar ese virtual host con dominios alias. Cada dominio alias siendo uno de los sitios adicionales en tu red.

Sin embargo, termines ajustando tu configuración, necesitas que el DNS de cada dominio resuelva al mismo servidor web, y que cada dominio apunte al mismo directorio donde está instalado el dominio principal con WordPress. Cada dominio en tu red necesita apuntar al mismo servidor web con registros DNS y compartir la misma ruta de directorio para los archivos usados por WordPress.

Una vez que tengas todo configurado y funcionando correctamente como se discutió anteriormente. Inicia sesión en tu área de administración de WordPress y navega al área de administración de la red para añadir un nuevo sitio a tu red.

Cuando vayas a añadir un sitio, te obligará a añadir el sitio web como si fuera un subdominio bajo tu dominio principal. Simplemente acéptalo. Introduce algo temporal.

Una vez que el sitio haya sido añadido, búscalo en la lista de sitios de tu red. Haz clic en editar en ese sitio específico. Ahora, puedes cambiar completamente el 100% del nombre de dominio de ese sitio web. Es entonces cuando pondrías el nombre de dominio real para este sitio TLD.

Sé que es un poco astuto hacerlo de esa manera, pero funciona y no necesitas usar ningún plugin.

3 ene 2017 16:38:45
Comentarios

Gracias por esto, parece funcionar - y sí parecía necesitar la parte de la cookie. En mi caso, 1) registré un nuevo dominio, 2) apunté sus nameservers hacia mi host existente de WordPress Multisite, 3) en cPanel, agregué un dominio adicional (Add-On Domain), estableciendo el directorio raíz como el mismo public_html que el sitio principal (como dijiste; no probé la forma predeterminada con un nuevo directorio, así que no estoy seguro si eso funcionaría), y 4) cambié la URL del subsitio de http://oldsubdomain.primarysite.com a http://www.newdomain.com. Cruzo los dedos, hasta ahora no hay problemas de DNS.

Robert Andrews Robert Andrews
6 oct 2018 23:39:10

Me encanta esta respuesta...pero tengo un problema. Tu sugerencia de cambiar el .htaccess, ya que WordPress también dio la misma modificación. Cuando hago este cambio, el sistema se cae. ¿Alguna idea de por qué pasaría esto?

Debbie Kurth Debbie Kurth
26 jun 2019 05:07:28

A mí también me gusta hacerlo de esta manera. ¿Esto tendrá riesgo de corromper los sitios cuando WordPress se actualice cada vez?

Jornes Jornes
17 mar 2021 17:27:04
1

WordPress ahora tiene un artículo de soporte sobre esto. Básicamente, los pasos recomendados son los delineados por David y Michael:

  1. Mapear el nombre de dominio en el DNS hacia tu servidor
  2. Asegurarse de que este dominio esté registrado en tu servidor con un host virtual apuntando al directorio de WordPress
  3. Generar e instalar un certificado SSL en tu servidor que incluya el dominio deseado (técnicamente esto es opcional, pero restringir a los usuarios a HTTP no es una buena idea, y ahora es regularmente penalizado con malas puntuaciones SEO)
  4. Actualizar la URL del sitio en tu blog de WordPress para que apunte al nuevo dominio
  5. Si persisten problemas con las cookies, definir COOKIE_DOMAIN en wp-config.php

La principal diferencia es que, en lugar de dejar el dominio de la cookie vacío (define( 'COOKIE_DOMAIN', '' );), recomiendan llenarlo con el dominio al que fue la solicitud HTTP:

define('COOKIE_DOMAIN', $_SERVER['HTTP_HOST']);

Esto ayuda a evitar problemas con las cookies en instalaciones multisitio bajo diferentes nombres de dominio, especialmente para instalaciones en subdirectorios.

26 feb 2020 11:27:40
Comentarios

¿Cuál es la diferencia con cambiar ADMIN_COOKIE_PATH, COOKIEPATH y SITECOOKIEPATH por una cadena vacía como hizo Michael? ¿Y usar $_SERVER['HTTP_HOST'] en lugar de una cadena vacía para COOKIE_DOMAIN? ¿No es vulnerable a inyección de cabecera HTTP Host? Solo cambiar COOKIE_DOMAIN funcionó para mí y la única diferencia que noté es que $_SERVER['HTTP_HOST'] establecerá el dominio de la cookie como .subdominio.dominio.tld en lugar de subdominio.dominio.tld (lo que solo sería útil si tenemos otro nivel de subdominio).

baptx baptx
7 abr 2021 14:26:30
0

Fue posible sin usar un plugin desde hace algunas versiones (no recuerdo la versión concreta, pero la función lleva un tiempo disponible). Sin embargo, si empiezas desde cero, deberías instalar WordPress multisite en modo de subdominio.

Debes declarar una URL principal (probablemente kevin123.example) como la URL principal de la red (multisite). Esto se almacena en wp-config.php en la constante DOMAIN_CURRENT_SITE y el sitio (anteriormente conocido como »blog«) que usa este dominio como URL de inicio debe tener el ID almacenado en BLOG_ID_CURRENT_SITE. Pero esto es bastante estándar durante el proceso de instalación.

WordPress solo te permite especificar el subdominio cuando creas un nuevo sitio. Pero después de crear el sitio, puedes editarlo y añadir un valor completamente arbitrario para la URL del sitio. Lo describí hace algún tiempo en esta respuesta con algunas capturas de pantalla: ¿Son posibles los subdominios anidados con un multisite de subdominio?

También podrías necesitar establecer la constante COOKIE_DOMAN a un valor vacío en tu wp-config.php:

define( 'COOKIE_DOMAIN', '' );
3 ene 2017 13:48:26