Worpress
WordPress Multisite con sudominios en hosting compartido
28A finales de junio se publicó la nueva versión mayor de WordPress, la 3.0. Entre sus muchas novedades, la que más me ha gustado es la capacidad de hospedar varios blogs de forma nativa, capacidad que se conoce como multisite. En este sentido, se nos ofrecen dos posibilidades para montarlo en función de las capacidades de nuestro servidor web:
- Con subdominios: son de la forma blog1.dominio.com blog2.dominio.com, etc. Es la forma más conveniente ya que cada blog genera su propio robots.txt y muchos plugins funcionan un poco mejor así. La desventaja es que requiere la capacidad de habilitar subodmains wirldcard en el servidor DNS, o al menos eso dicen en wordpress, ya que en este artículo os mostraré cómo montar un multisite sin esta capacidad.
- Con subdirectorios: son de la forma dominio.com/blog1 dominio.com/blog2, etc. Este requiere mod_rewrite en el servidor php, que suele estar disponible, por lo que es mucho más compatible. Como desventajas, la ausencia de las ventajas que tenemos con subdominios: disponemos de un solo robots.txt y algunos plugins cuesta hacerlos funcionar.
En cualquiera de estas modalidades de instalación podemos aplicar un plugin de mapeo de dominios, lo que se traduce en que se pueden administrar varios blogs de varias webs diferentes desde una sola instalación de wordpress. En mi caso esto ayuda tremendamente, ya que gestiono 3 webs distintas con wordpress, cada una de ellas con su propia instalación, muchos plugins en común, etc. Esto significa que cada vez que sale una nueva versión de wordpress tengo que actualizar cada blog independientemente, cada vez que sale un plugin más de lo mismo, y si encima añadimos que el sistema de actualización automática de wordpress no me funciona por las características de mi servidor de hosting esta capacidad es todo un aliciente. Como valor añadido, con este sistema sólo se usa una base de datos, que también facilita las cosas en servidores de hosting.
Sin embargo, antes de migrar las instalaciones anteriores a una nueva unificada tenía que dejar el nuevo sistema funcionando al menos con las mismas capacidades de que disponía en el sistema anterior, y una de las más importantes es poder gestionar los ficheros robots.txt virtuales y sitemaps de cada uno de los blogs. Digo lo de robots.txt virtuales porque utilizo varios plugins para que “adopten la forma” que yo quiero, en vez de generarlo manualmente. Además, para gestionar el sitemaps utilizo un plugin llamado Google XML Sitemaps, y hacerlo funcionar con multisite y mapeo de dominio no es algo inmediato. Si añadimos que mi hosting es compartido y como casi todos no permite crear el subdomain wildcard entonces la cosa se puede volver realmente complicada.
Pese a que en principio todo parece estar en contra se puede montar, y la finalidad de este post es explicaros cómo. Para hacer más fácil la compresión del proceso voy a utilizar como ejemplo la web de mi grupo a la que se puede acceder desde el dominio www.ipsilon-metal.com y que está contenida en la red multisite que he creado desde el dominio vidakovic.es
Instalación de wordpress
La instalación inicial de wordpress es la misma de siempre. Descargamos el paquete de instalación de www.wordpress.org. Las instrucciones de instalación están contenidas en el propio paquete que nos descargamos y no debería darnos ningún problema.
Una cosa a tener en cuenta es que hay que instalarlo en el dominio principal, en mi caso vidakovic.es. Esto es importante para que el sistema de subdominios trabaje correctamente.
Configuración de multisite con subdominios
Tal y como he comentado, para montar multisite con subdominios el equipo de wordpress indica que hay que habilitar la función Subdomain Wirldcard en el servidor DNS. Sin embargo, en los hostings compartidos esto no suele ser posible.
Para solucionar este problema primero veamos qué es. Subdomain Wildcard es una característica de los servidores DNS que hace que cualquier subdominio que no esté definido en el servidor apunte al dominio principal. Me explico: si tuviera habilitada esta característica al acceder a loquesea.vidakovic.es el DNS redireccionaría automáticamente a vidakovic.es. La configuración consiste en insertar una entrada conteniendo *.vidakovic.es en fichero de configuración de la zona correspondiente.
Y ahora viene la pregunta del millón: ¿para qué necesita WordPress que hagamos esto? Pues muy sencillo, para que cuando creemos un nuevo blog en nuestra red el DNS redirija el subdominio directamente a nuestro dominio principal sin necesidad de definirlo en ningún sitio, y Worpress encargase de seleccionar el blog al que queremos acceder según la URL que ha recibido.
Pues bien, si antes de cear un nuevo blog creamos en el DNS el subdominio que corresponda a la dirección del nuevo blog y que apunte a nuestro dominio principal, no necesitamos definir el Subdomain Wildcard, ya que hemos definido el subdominio manualmente y hemos indicado a dónde va dirigido.
Os explico cómo hacerlo.
1. Configuración del multisite
Para ello hay que seguir las instrucciones oficiales que se encuentran en http://codex.wordpress.org/Create_A_Network
Hay que saltarse el paso 2 “Setting wildcard subdomains” y seguir los pasos para instalar el multisite CON SUBDOMINIOS ignorando las advertencias del sistema sobre la configuración del DNS.
Llegados a este punto wordpress ya está configurado como multisite y por lo tanto podemos crear nuevos blogs en nuestra red a través del menú “Súper Admin”. ¡Alto! No lo hagas todavía, antes hay trabajo que hacer.
2. Instalar y configurar el plugin de mapeo de dominios
Este plugin es el que hará posible que cada unos de los blogs tenga su propio dominio. La dirección donde podéis descargarlo es: http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/
Para instalarlo y configurarlo seguir las instrucciones que se incluyen en el readme
3. Creación de un subdominio para un nuevo blog de la red
Cada vez que queramos crear un nuevo blog tendremos que crear previamente un subdominio con el mismo nombre que insertaremos como “dirección del sitio” en el proceso de creación del blog en la red, independientemente del título que le demos al blog. Para ello vamos a la configuración DNS de nuestro hosting y creamos un subdominio (por ejemplo en mi caso ipsilonmetal.vidakovic.es) que tenga el mismo destino que el dominio principal donde tenemos instalada nuestra red de wordpress (siguiente con el ejemplo, en mi caso tendría que apuntar al mismo sitio que apunta vidakovic.es).
4. Creación del nuevo blog en la red
A continuación nos vamos al panel de control de wordpress del dominio principal y creamos un nuevo blog desde el menú Super Admin -> Sitios
Como he dicho antes, la dirección del sitio debe corresponder con el subdominio que hemos creado (en mi ejemplo ipsilonmetal.vidakovic.es). Se rellenan el resto de datos y ya tenemos el sistema funcionando.
5. Mapear el nuevo blog a su dominio principal
Una vez creado el blog vemos que podemos acceder a él (en mi caso a través de ipsilonmetal.vidakovic.es), pero queda algo importante. Lo que queremos es que dicho blog tenga su propio dominio. Para ello debemos seguir 2 pasos:
- Debemos ir a la configuración DNS del dominio del nuevo blog y hacer que éste apunte al mismo sitio al que apunta el dominio del blog principal de la red. Ya sé que suena un poco lioso, aquí va el ejemplo: tendría que hacer que ipsilon-metal.com apunte al mismo sitio que apunta vidakovic.es
- En el panel de control del nuevo blog (no el de la red principal), ir a Herramientas -> Domain Mapping y añadir el dominio que queremos marcando la opción de que sea el principal. En mi caso tendría que añadir ipsilon-metal.com o www.ipsilon-metal.com (deprendiendo de cómo queramos que se vea en la barra de direcciones).
Desde ese momento sólo podremos acceder al dicho blog a través de su dominio principal (www.ipsilon-metal.com) y no el subdominio de la red (ipsilonmetal.vidakovic.es).
Configuración del plugin de sitemaps
Ya tenemos una red de wordpress por subdominios instalada y funcionando y somos capaces de mapear los blogs a dominios. Además puedes comprobar que cada blog, al ser un subdominio, tiene su propio robots.txt. Ahora queda la creación de sitemaps, para lo que utilizaremos el plugin Google XML Sitemaps tal y como he indicado anteriormente. El problema es que este plugin no soporta multiblog, aunque el autor está trabajando en una versión que lo soporte. Mientras que esto sea así, Ian Dembowski ha creado un workaround fácil y rápido que funciona a las mil maravillas. Estos son los pasos a seguir.
1. Instalar el plugin
Lo haremos por el procedimiento habitual y lo dejaremos DESHABILITADO.
2. Eliminar la detección de multiblog
El plugin tiene la habilidad de detectar si está funcionando en un entorno multisite y si es así no se activa, mostrando un mensaje indicando que no es compatible con dicha funcionalidad. Procederemos a desactivar este aviso permitiendo que el plugin se active. Para ello tenemos que editar el archivo wp-content/plugins/google-sitemap-generator/sitemap.php donde comentaremos de la línea 53 a la 58, dejándolo de la siguiente manera:
//Check for 3.0 multisite, NOT supported yet!
//if((defined('WP_ALLOW_MULTISITE') && WP_ALLOW_MULTISITE) || (function_exists('is_multisite') && is_multisite())) //{
//if(function_exists('is_super_admin') && is_super_admin()) {
// add_action('admin_notices', array('GoogleSitemapGeneratorLoader', 'AddMultisiteWarning'));
//}
//
// return;
//}
2. Activar y configurar el plugin
Una vez hecho esto ya podemos activar el plugin. Es MUY IMPORTANTE ACTIVARLO INDIVIDUALMENTE para cada sitio, y no utilizar la opción de activarlo para la red completa.
En la configuración nos iremos al apartado “localización de su fichero sitemap”. Ahí debemos seleccionar la opción de localización automática y cambiar el nombre del fichero. El nuevo nombre del fichero deberá ser sitemap-<dominio_mapeado>.xml. Continuando con mi ejemplo de la web de Ipsilon (www.ipsilon-metal.com), la configuración del plugin quedaría de la siguiente manera:
Configuramos las opciones que queramos del plugins y guardamos los cambios. Una vez hecho esto pulsamos sobre la opción de generación manual para que nos cree el primer sitemap.
3. Configuración del fichero .htaccess
Tras esto configuramos el fichero .htaccess para que redireccione el archivo sitemap.xml al que realmente queremos. Para ello debemos añadir el siguiente bloque tras las 3 primeras líneas que contiene el fichero:
# Google XML sitemaps
RewriteRule ^sitemap.xml sitemap-%{SERVER_NAME}.xml [L]
RewriteRule ^sitemap.xml.gz sitemap-%{SERVER_NAME}.xml.gz [L]
NOTA: si existe algún fichero llamado simplemente sitemap.xml en la raíz del directorio principal de worpress debemos borrarlo.
4. Probar que todo funciona correctamente
Ya está todo configurado. Lo primero sería comprobar que el fichero se ha creado correctamente. Para ello accedemos al sitemap que hemos creado, que en mi ejemplo sería http://www.ipsilon-metal.com/sitemap-www.ipsilon-metal.com.xml y debería de aparecer el fichero que hemos generado.
Lo segundo sería comprobar que las reglas el archivo .htaccess están funcionando correctamente. Siguiendo con el ejemplo de la ilustración yo accedería a http://www.ipsilon-metal.com/sitemap.xml y vería el mismo contenido que en el fichero anterior.
Por último, en el fichero virtual robots.txt debería aparecer una entrada al fichero sitemap real del dominio. En mi ejemplo contendría la siguiente línea:
Sitemap: http://www.ipsilon-metal.com/sitemap-www.ipsilon-metal.com.xml.gz
Llegados a este punto ya tenemos la web funcionando con su propia información de posicionamiento.

