Tout d'abord, j'ai lu un certain nombre de messages sur ce processus. Cependant, pour diverses raisons, le processus reste difficile à mettre en œuvre ou à dépanner faute d'exemples même abstraits, ou peut-être trop abstraits. Et il y a quelques messages "ne peut pas faire", presque toujours suivis de "avec 3.5, vous pouvez maintenant" des mises en garde, donc si on peut rester ambigu, bien que sans doute non trivial.
Sommaire:
Comment déplacer un wordpress multisite (WPMS) de root.com vers root / blogs?
Pour cet exemple, nous déplaçons un WPMS de "root.com" vers "root.com/blogs"
Je comprends que je dois mettre à jour les chemins d'accès dans la base de données et wp-config.php de manière appropriée. Il semble que je doive également mettre à jour .htaccess? Je suis également au courant du problème de sérialisation avec les mises à jour de recherche / remplacement et de requête mysql.
J'ai un WPMS que j'ai mis à jour en 3.5. J'ai trouvé les tableaux suivants avec les informations de domaine et de chemin
Configuration de travail existante avant de passer au sous-répertoire
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. Le blog_id correspond aux tables d'options wp _ # _ qui contiennent:
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. Dans mon wp-config.php, j'ai les lignes spécifiques à WPMS suivantes:
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. Enfin, dans mon .htaccess , j'ai:
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]
Mises à jour nécessaires pour déplacer le site
Il me semble que pour déplacer mon site vers les / blogs, je voudrais:
1. Mettez à jour wp_blogs vers
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. Mettez à jour wp_site vers
update wp_site set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select * from wp_site;
+----+-------------+------------+
| id | domain | path |
+----+-------------+------------+
| 1 | root.com | /blogs/ |
+----+-------------+------------+
3. Options wp _ # _
+-------------+--------------------------------+
| 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 );
note: je ne sais pas comment cette étape est correctement mise à jour
5. .htaccess
J'ai trouvé de vagues instructions de "mise à jour .htaccess appropriée", mais pas de détails. Mettre à jour RewriteBase? Quelles lignes .htaccess mettre à jour lorsque je déplace root.com vers root.com/blogs?
Les chemins trouvés dans les publications manqueront au processus ci-dessus. Mes druthers doivent utiliser l'outil de recherche et de remplacement pour cela, après avoir effectué ces mises à jour plus fondamentales; ou ai-je tort?
Update bungeshea suggère que, oui, je pointe RewriteBase vers le sous-répertoire "blogs", c'est-à-dire,
RewriteBase /Blogs
Enfin, si vous ne connaissez pas http://interconnectit.com/products/search-and-replace-for-wordpress-databases/, vous devriez. C'est excellent.
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
devraient plutôt êtreupdate wp_blogs set path=concat('/blogs',path);