He encontrado mil tutoriales para habilitar las redes multisitio en WordPress, pero en todos hay alguna cosa que me falla y no sé por qué. La gente propone hacer cosas raras con el htaccess y luego no les funciona como esperan. Lo que yo he hecho y me ha funcionado es lo siguiente:
1. Si la URL de nuestra web empieza con www, hay que quitárselas antes de activar la red. Esto se hace desde Ajustes -> Generales (no preocuparse, luego las ponemos de nuevo).
2. Activar la red como es costumbre: Añadir línea en el wp-config.php:
define( 'WP_ALLOW_MULTISITE', true );
3. Elegir la opción de red de subdominios y copiar las líneas que WordPress nos indica al wp-config.php y htaccess.
4. ¡Listo! Ahora tenemos nuestra web, ejemplo.com, y podemos crear nuevos blogs como blog.ejemplo.com.
5. Si queremos recuperar las www, hay que ir a la base de datos y modificar la tabla wp_options. Allí, y sólo allí es donde hay que volver a añadirle las www a los campos home y siteurl.
De esta forma, la red sigue siendo ejemplo.com, por lo que los nuevos subdominios serán de la forma subdominio.ejemplo.com, sin www. Sin embargo, a la web principal se accederá con www.ejemplo.com. Como véis, no hay que tocar para nada el htaccess. Si modificáis cualquier otro dato en la base de datos, alguna variable del wp-config.php o el htaccess os hará cosas raras.
Otra cosa importante es que WordPress redirecciona al dominio correcto, es decir, que si hemos configurado el dominio con www y tratamos de entrar sin ellas, nos redirigirá al dominio con www, y viceversa.
6. Hasta aquí tenemos una red con subdominios y Single SignOn. Esto quiere decir que iniciando sesión en cualquier subdominio iniciamos sesión en todos los demás y podemos administrarlos sin necesidad de volver a introducir nombre y contraseña.
7. Si queremos hacer que un blog tenga un dominio independiente, podemos ir al Administrador de la red y editar el sitio (esto sólo puede hacerlo un administrador). Allí, podemos ponerle un dominio como otrodominiomio.net, con o sin www. De nuevo, no es necesario modificar para nada el htaccess.
8. Utilizar dominios diferentes tiene dos efectos colaterales. El primero es que si intentáis iniciar sesión en otro dominio que no sea el principal nos os funcionará. Para que funcione, hay que modificar el fichero wp-config.php:
define('SUBDOMAIN_INSTALL', true); // Hay que cambiarlo por: define('SUBDOMAIN_INSTALL', false);
// ...
/* That's all, stop editing! Happy blogging. */
El otro efecto colateral es que el Single SignOn deja de funcionar. No he encontrado una forma fácil de hacer que iniciando sesión en cualquier dominio/subdominio de la red la sesión se comparta en todos los demás (habrá plugins para ello, supongo). Lo que sí he encontrado es la forma de recuperar el SSO, al menos entre subdominios del dominio principal. Para ello hay que añadir la siguiente línea al archivo wp-config.php:
// Compartir la cookie para todos los subdominios
define('COOKIE_DOMAIN', '.dominio.com');
// OJO al "." inicial
Con esto tenemos nuestra red configurada, con o sin www en el dominio principal y con posibilidad de utilizar diferentes dominios sin ningún plugin adicional y sin añadir reglas en el htaccess. Espero que sea útil a alguien. Desde luego yo estos son los pasos que seguiré de ahora en adelante cuando cree redes WordPress.
Ale, otro día más! 🙂