Em primeiro lugar, li várias postagens sobre esse processo. No entanto, por várias razões, o processo continua difícil de implementar ou solucionar problemas por falta de exemplos abstratos, ou talvez abstratos demais. E há algumas postagens "não posso fazer", quase sempre seguidas de "com 3.5, agora você pode" advertências, para saber se alguém pode permanecer ambíguo, embora sem dúvida não seja trivial.
Resumo:
Como mover um wordpress multisite (WPMS) de root.com para root / blogs?
Neste exemplo, estamos movendo um WPMS de "root.com" para "root.com/blogs"
Entendo que preciso atualizar os caminhos no banco de dados e no wp-config.php adequadamente. Parece que também posso precisar atualizar .htaccess? Também estou ciente do problema de serialização com atualizações de consulta de pesquisa / substituição e mysql.
Eu tenho um WPMS que atualizei para 3.5. Encontrei as tabelas a seguir com informações de domínio e caminho
Configuração de trabalho existente antes de passar para o subdiretório
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. O blog_id corresponde às tabelas de opções wp _ # _ que contêm:
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. No meu wp-config.php , tenho as seguintes linhas específicas do 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 fim, no meu .htaccess , tenho:
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]
Atualizações necessárias para mover o site
Parece-me que, para mover meu site para os / blogs, eu deveria:
1. Atualize wp_blogs para
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. Atualize wp_site para
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 _ # _ opções
+-------------+--------------------------------+
| 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: não sei como esta etapa é atualizada adequadamente
5. htaccess
Encontrei vagas instruções de "atualização .htaccess adequadamente", mas não específicas. Atualizar RewriteBase? Quais linhas em .htaccess atualizo quando movo root.com para root.com/blogs?
Faltam no processo acima os caminhos encontrados nas postagens. Meus defensores devem usar a ferramenta de pesquisa e substituição para isso, depois de fazer essas atualizações mais fundamentais; ou eu estou errado?
A atualização da bungeshea sugere que, sim, aponte o RewriteBase para o subdiretório "blogs", ou seja,
RewriteBase /Blogs
Por fim, se você não conhece o http://interconnectit.com/products/search-and-replace-for-wordpress-databases/, deve. É excelente.
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
deveriam ser #update wp_blogs set path=concat('/blogs',path);