Multisite en subcarpeta - Cómo hacer que nuevos sitios estén en el mismo nivel de subcarpetas que el sitio principal

20 oct 2013, 20:48:08
Vistas: 18.2K
Votos: 5

Tengo la siguiente situación. Tengo una instalación de WP Multisite en un subdirectorio:

my-domain.com/subfolder/wp-multisite-root

Normalmente, los sitios adicionales se crearían de esta manera:

my-domain.com/subfolder/wp-multisite-root
my-domain.com/subfolder/wp-multisite-root/site1
my-domain.com/subfolder/wp-multisite-root/site2
my-domain.com/subfolder/wp-multisite-root/site3

¿Hay alguna manera de hacer que se creen así?

my-domain.com/subfolder/wp-multisite-root
my-domain.com/subfolder/site1
my-domain.com/subfolder/site2
my-domain.com/subfolder/site3

Hay un detalle adicional. my-domain.com/subfolder/ contiene otra aplicación que no es WordPress.

1
Comentarios

¿Qué significa aplicación no wp? ¿Qué conflictos de .htaccess / slug tienes?

brasofilo brasofilo
20 oct 2013 23:26:10
Todas las respuestas a la pregunta 4
1

Después de todos estos años espero que esto aún responda a tu pregunta...

Creo que he conseguido que funcione la situación que deseas. Aunque no tengo la instalación de WordPress en '/subcarpeta/', pero tengo una instalación 'en subdirectorio' por idioma, y al mismo nivel:

 mi-dominio.com/nl/ -> esta es la instalación principal, ID del sitio = 1 
 mi-dominio.com/en/ -> este es el primer sitio creado por multisitio, ID del sitio = 2
 mi-dominio.com/de/ -> este es el segundo sitio creado por multisitio, ID del sitio = 3

Requiere un poco de 'hackeo' en la base de datos, pero es muy fácil.

Paso 1: Asegúrate de que tu instalación 'raíz' de multisitio funcione como se espera en su subdirectorio. En mi caso tengo lo siguiente en 'wp-config.php':

define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false); // permitir instalación en subdirectorio (true para instalación en subdominio)
define('DOMAIN_CURRENT_SITE', 'mi-dominio.com/subcarpeta');
define('PATH_CURRENT_SITE', '/wp-multisite-root/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);

(bueno, en realidad no tengo '/subcarpeta' :))

Paso 2: Ahora crea tu primer sitio nuevo a través de multisitio en una subcarpeta. Al ingresar el nombre de la carpeta 'sitio2', WordPress te dice que se creará como: mi-dominio.com/subcarpeta/wp-multisite-root/sitio2 Eso es correcto, eliminaremos manualmente la carpeta 'wp-multisite-root'

Paso 3: Abre phpMyAdmin/directAdmin En la tabla wp_blogs edita la entrada de tu nuevo sitio creado. Tendremos que modificar la ruta del mismo. Se puede hacer con la siguiente consulta:

UPDATE `wp_blogs` SET `path` = '/sitio2/' WHERE `wp_blogs`.`path` = '/wp-multisite-root/sitio2/';

Cambia el nombre del dominio y del sitio según corresponda. También busca el ID del sitio mencionado allí. Si es el primer sitio extra creado, será el ID 2 como en mi introducción.

Paso 4: Busca en la tabla wp_<SITEID>_options. En nuestro caso con el ID del sitio 2, será wp_2_options. Allí tendremos que cambiar el valor_de_opcion donde el nombre_de_opcion es 'siteurl' y 'home'. Se puede hacer ejecutando las siguientes consultas:

UPDATE `wp_2_options` SET `option_value` = 'mi-dominio.com/subcarpeta/sitio2/' WHERE `option_name` = 'siteurl';
UPDATE `wp_2_options` SET `option_value` = 'mi-dominio.com/subcarpeta/sitio2/' WHERE `option_name` = 'home';

De nuevo, cambia el dominio y el nombre de la carpeta según corresponda. Notarás que eliminamos 'wp-multisite-root' de la URL allí, por lo que sitio2 estará al mismo nivel que `wp-multisite-root'.

Paso 5: Actualiza wp-admin y tus sitio(s) aparecerán listados como deseabas.

27 jul 2016 10:31:37
Comentarios

Instalar una multisite dentro de una subcarpeta no me permite agregar un nuevo sitio con dominio sin que las publicaciones aparezcan como 404. El dominio principal funciona bien, el nuevo funciona bien excepto las publicaciones, que aparecen como 404. He ido a los enlaces permanentes pero no funciona, lo único que funciona es poner en el enlace permanente index.php/%postname%/ allí funciona bien pero esto hace que index.php aparezca en todas las URLs lo cual se ve feo estéticamente. Creo que necesito arreglar algo en .htaccess

LΞИIИ LΞИIИ
17 sept 2024 03:59:14
0

La respuesta de Piemol es excelente y me funcionó. Sin embargo, no podía iniciar sesión en ninguno de mis sitios excepto en el principal. Al inspeccionar mis cookies, descubrí que WordPress estaba creando una cookie solo para mi sitio principal y no para los otros subdirectorios. Usando el ejemplo de OP, estaba creando una cookie para /subfolder/wp-multisite-root, la cual /subfolder/site1 no podía usar.

Investigué en el núcleo de WordPress para ver qué necesitaba corregir, y terminé agregando este código a mi plugin personalizado para solucionar las rutas usadas para las cookies:

define('COOKIEPATH', '/subfolder/');
define('SITECOOKIEPATH', '/subfolder/');

En mi caso, la estructura de mi sitio es como la de Piemol, así que corregí las rutas de mis cookies para que apunten a la raíz:

define('COOKIEPATH', '/');
define('SITECOOKIEPATH', '/');
23 ago 2017 17:23:07
4

La solución más simple es hacer que mi-dominio/subcarpeta/ sea el directorio de instalación de WordPress y la URL base, luego activar multisitio configurado para usar subdirectorios.

20 oct 2013 20:50:05
Comentarios

Lo siento, olvidé mencionar que my-domain/subfolder/ contiene una aplicación.

HoGo HoGo
20 oct 2013 21:05:45

¿Quizás mover la aplicación?

Chip Bennett Chip Bennett
20 oct 2013 21:10:50

@ChipBennett ¿eso anularía alguna de las configuraciones actuales del sitio?

Rahman Sharif Rahman Sharif
15 jun 2014 15:15:53

¿Cómo convertir el directorio de instalación en una subcarpeta?

John Jang John Jang
1 ene 2019 14:12:03
0
-1

He estado intentando hacer algo similar, y según todo lo que he descubierto hasta ahora, creo que la respuesta es no, actualmente esto no es posible :(

8 jul 2014 18:10:03