Forzar sudirectorios en multisitio de WordPress

Wordpress

Ya tienes un sitio creado en WordPress y deseas convertir tu instalación en multisitio, pero deseas que cada nueva página se acceda en forma de subdirectorio y ¡oh sorpresa!, WordPress no te lo permite.

Aquí veremos como podemos forzar a que lo haga, pero antes ¡No olvides hacer respaldo de tu sitio!

Primero deberemos dirigirnos a nuestra carpeta wp-config de nuestro sitio web, en donde encontraremos la siguiente linea:

/* That’s all, stop editing! Happy blogging. */

Sobre ella escribiremos las siguientes lineas de código. De esta forma WordPress sabrá que queremos activar el modo multisitio.

/* Multisitio */
define( 'WP_ALLOW_MULTISITE', true );

Para iniciar con la creación de la red de sitios es necesario desactivar todos los plugins.

Es hora de dirigirnos a nuestro escritorio en WordPress en donde podremos encontrar una nueva opción en el apartado de Herramientas llamada Configuración de la red.

Daremos en Instalar, y a continuación nos pedirá modificar el archivo wp-config.php añadiendo las siguientes lineas de código después de la que agregamos anteriormente:

/* Multisitio */
define( 'WP_ALLOW_MULTISITE', true );

define('SUBDOMAIN_INSTALL', true);
define('DOMAIN_CURRENT_SITE', 'tudominio.com');
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

Para forzar los subdirectorios deberemos cambiar la siguiente linea sustituyendo «true» con «false»:

define('SUBDOMAIN_INSTALL', false);

WordPress nos pedirá reemplazar las reglas del fichero .htaccess con las siguientes:

# BEGIN 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]
# END WordPress

Sin embargo, habremos de modificar algunas de estas reglas.

# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [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).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
# END WordPress

Una vez hayamos concluido, podremos refrescar el escritorio y comprobar que ya es posible crear un nuevo sitio utilizando subdirectorios.