En primer lugar, he leído varias publicaciones sobre este proceso. Sin embargo, por varias razones, el proceso sigue siendo difícil de implementar o solucionar por falta de ejemplos abstractos, o quizás demasiado abstractos. Y hay algunas publicaciones de "no puedo hacer", casi siempre seguidas de "con 3.5, ahora puedes" advertencias, así que si uno puede permanecer ambiguo, aunque sin duda no es trivial.
Resumen:
¿Cómo mover un wordpress multisite (WPMS) de root.com a root / blogs?
Para este ejemplo, estamos moviendo un WPMS de "root.com" a "root.com/blogs"
Entiendo que necesito actualizar las rutas en la base de datos y wp-config.php adecuadamente. Parece que también tengo que actualizar .htaccess? También estoy al tanto del problema de serialización con las actualizaciones de búsqueda / reemplazo y consulta mysql.
Tengo un WPMS que he actualizado a 3.5. He encontrado las siguientes tablas con información de dominio y ruta
Configuración de trabajo existente antes de pasar al subdirectorio
1. wp_blogs
select blog_id, domain, path from wp_blogs;
+---------+-------------+--------+
| blog_id | domain | path |
+---------+-------------+--------+
| 1 | root.com | / |
| 2 | root.com | /matt/ |
+---------+-------------+--------+
2. wp_site
select * in wp_site;
+----+-------------+------+
| id | domain | path |
+----+-------------+------+
| 1 | root.com | / |
+----+-------------+------+
3. El blog_id corresponde a las tablas de opciones wp _ # _ que contienen:
select option_name,option_value from wp_2_options
where option_name = 'home' or option_name = 'siteurl';
+-------------+--------------------------+
| option_name | option_value |
+-------------+--------------------------+
| home | http://root.com/matt/ |
| siteurl | http://root.com/matt/ |
+-------------+--------------------------+
4. En mi wp-config.php tengo las siguientes líneas específicas de WPMS:
define('WP_ALLOW_MULTISITE', true);
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false);
$base = '/';
define( 'DOMAIN_CURRENT_SITE', 'root.com' );
define( 'PATH_CURRENT_SITE', '/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
5. Por último, en mi .htaccess , tengo:
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).*) $1 [L]
RewriteRule ^[_0-9a-zA-Z-]+/(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
Actualizaciones necesarias para mover el sitio
Me parece que para mover mi sitio a / blogs, debería:
1. Actualice wp_blogs a
mysql> update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select blog_id, domain, path from wp_blogs where blog_id < 3;
+---------+-------------+--------------+
| blog_id | domain | path |
+---------+-------------+--------------+
| 1 | root.com | /blogs/ |
| 2 | root.com | /blogs/matt/ |
+---------+-------------+--------------+
2. Actualice wp_site a
update wp_site set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select * from wp_site;
+----+-------------+------------+
| id | domain | path |
+----+-------------+------------+
| 1 | root.com | /blogs/ |
+----+-------------+------------+
3. wp _ # _ opciones
+-------------+--------------------------------+
| option_name | option_value |
+-------------+--------------------------------+
| home | http://root.com/blogs/matt/ |
| siteurl | http://root.com/blogs/matt/ |
+-------------+--------------------------------+
4. wp_config.php
define('WP_ALLOW_MULTISITE', true);
define( 'MULTISITE', true );
define( 'SUBDOMAIN_INSTALL', false);
$base = '/blogs/';
define( 'DOMAIN_CURRENT_SITE', 'root.com' );
define( 'PATH_CURRENT_SITE', '/blogs/' );
define( 'SITE_ID_CURRENT_SITE', 1 );
define( 'BLOG_ID_CURRENT_SITE', 1 );
nota: no estoy claro cómo este paso se actualiza adecuadamente
5. .htaccess
Encontré instrucciones vagas de "actualizar .htaccess apropiadamente", pero no detalles. ¿Actualizar RewriteBase? ¿Qué líneas en .htaccess to actualizo cuando muevo root.com a root.com/blogs?
Falta el proceso anterior serán los caminos encontrados en las publicaciones. Mis objetivos son usar la herramienta de búsqueda y reemplazo para eso, después de haber realizado estas actualizaciones más fundamentales; o estoy equivocado?
Actualizar bungeshea sugiere que sí, apunto RewriteBase al subdirectorio "blogs", es decir,
RewriteBase /Blogs
Finalmente, si no sabe acerca de http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ , debería hacerlo. Es excelente.
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
deberían serloupdate wp_blogs set path=concat('/blogs',path);