WordPress multisitio: pasar de subdominios a subdirectorios

Tutorial WordPress

Como muchos sabeis desde WordPress 3.0 o superior es bastante fácil convertir una web de WordPress en un multisitio. Un multisitio es una instalación de WordPress que puede contener diferentes sitios, como por ejemplo una red de blogs, y todos se administran desde el mismo panel de control. Si no sabes pasar una instalación simple a multisitio puedes ver lo fácil que es en este artículo de Todotutoriales, en el Codex (la documentación oficial del WordPress en inglés) o en este artículo más extenso (también en inglés) Cómo habilitar y configurar una red multisitio en WordPress. Cuando creas un multisitio en una nueva instalación puedes elegir la estructura de la red, si será en base a subdominios o subdirectorios.

Si eliges subdominios la estructura de las URLs será esta:

  • tudominio.com (sitio principal)
  • blog1.tudominio.com
  • blog2.dominio.com

Si eliges subdirectorios la estructura de las URLs será esta:

  • tudominio.com (sitio principal)
  • tudominio.com/blog1
  • tudominio.com/blog2

Por supuesto donde pone blog1, blog2 puedes poner cualquier nombre que no esté vetado por el sistema o por el administrador de la red de sitios.

Sin embargo, si conviertes un sitio que ya tiene contenido, es decir ya hay páginas y entradas creadas, es posible que WordPress no te permita usar la opción de subdirectorios para evitar conflictos en enlaces permanentes y debas crearlo en modo subdominios.

Cuando nos pusimos a convertir en multisitio de WordPress el dominio de mi empresa, ya teníamos el  sitio principal funcionando desde hacía muchos años, así que al pasar el sitio a multisitio, WordPress devolvió un aviso diciendo algo así como “Debido a que su instalación no es nueva, los sitios de su red de WordPress deben usar subdominios.”

Básicamente, esto obligaba a usar subdominios en lugar de subdirectorios. De acuerdo, seguí adelante y lo puse de esa manera. Años después decidimos comenzar a usar subdirectorios en lugar de subdominios y realmente, estando nuestro multisitio actualizado y sin contener basurilla ni cosas raras, es mucho más sencillo de lo que parece. Así es como lo hice:

Cómo cambiar un multisitio de WordPress de subdominios a subdirectorios en solo dos pasos

Antes de nada actualiza todo lo que tengas desactualizado en tu WordPress y haz una copia de seguridad completa (archivos y base de datos).

Paso 1

Abre el fichero wp-config.php y cambia esta línea

define( 'SUBDOMAIN_INSTALL', true );

por esta otra

define( 'SUBDOMAIN_INSTALL', false );

Paso 2

Abre el fichero .htaccess y cambia esto:

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
 
# uploaded files
RewriteRule ^files/(.+) wp-includes/ms-files.php?file=$1 [L]
 
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
 
# END WordPress

por esto otro

# BEGIN WordPress

<IfModule mod_rewrite.c>

RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
 
# uploaded files
RewriteRule ^([_0-9a-zA-Z-]+/)?files/(.+)  wp-includes/ms-files.php?file=$2 [L]
 
# add a trailing slash to /wp-admin
RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L]
 
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L]
RewriteRule  ^([_0-9a-zA-Z-]+/)?(.*.php)$ $2 [L]
RewriteRule . index.php [L]

</IfModule>

# END WordPress

Y ¡eso es todo! ya está hecho. Yo, como soy muy exagerada después de hacerlo pulsé en “Actualiza la red” desde el escritorio de administración de la red, pero ya antes de hacerlo funcionó perfectamente.

Si lo que necesitas es pasar una red de subdirectorios a subdominios lo que hay que hacer es justo lo contrario.

¿Te ha resultado fácil? ¿Prefieres contratar a expertos en WordPress para este tipo de tareas o prefieres aprender a hacerlas tú mismo? ¡Escríbenos, comenta y comparte!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *