In primo luogo, ho letto un numero di post su questo processo. Tuttavia, per vari motivi, il processo rimane difficile da implementare o risolvere per mancanza di esempi anche astratti o forse troppo astratti. E ci sono alcuni post "impossibile", quasi sempre seguiti da "con 3.5, ora puoi" avvertenze, quindi se uno può rimanere ambiguo, anche se senza dubbio non banale.
Sommario:
Come spostare un sito wordpress (WPMS) da root.com a root / blog?
Per questo esempio, stiamo spostando un WPMS da "root.com" a "root.com/blogs"
Capisco che devo aggiornare i percorsi nel database e wp-config.php in modo appropriato. Sembra che dovrei anche aggiornare .htaccess? Sono anche a conoscenza del problema di serializzazione con gli aggiornamenti di ricerca / sostituzione e query mysql.
Ho un WPMS che ho aggiornato alla 3.5. Ho trovato le seguenti tabelle con informazioni sul dominio e sul percorso
Configurazione di lavoro esistente prima di passare alla sottodirectory
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. blog_id corrisponde alle tabelle delle opzioni wp _ # _ che contengono:
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. Nel mio wp-config.php ho le seguenti righe specifiche di 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. Infine, nel mio .htaccess , ho:
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]
Aggiornamenti richiesti per spostare il sito
Mi sembra che per spostare il mio sito su / blog, vorrei:
1. Aggiorna 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. Aggiorna 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 _ # _ opzioni
+-------------+--------------------------------+
| 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: non sono chiaro come questo passaggio venga opportunamente aggiornato
5. .htaccess
Ho trovato vaghe istruzioni "update .htaccess appropriatamente", ma non specifiche. Aggiorna RewriteBase? Quali righe in .htaccess devo aggiornare quando sposto root.com su root.com/blogs?
Manca il processo di cui sopra saranno i percorsi trovati nei post. I miei druther devono usare lo strumento di ricerca e sostituzione per questo, dopo aver apportato questi aggiornamenti più fondamentali; o mi sbaglio?
Aggiornamento bungeshea suggerisce che, sì, indico RewriteBase alla sottodirectory "blog", ovvero
RewriteBase /Blogs
Infine, se non conosci http://interconnectit.com/products/search-and-replace-for-wordpress-database/ , dovresti. È eccellente
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
dovrebbero piuttosto essereupdate wp_blogs set path=concat('/blogs',path);