Erstens habe ich eine Reihe von Beiträgen zu diesem Prozess gelesen . Aus verschiedenen Gründen bleibt der Prozess jedoch schwierig zu implementieren oder zu beheben, da nicht einmal abstrahierte Beispiele vorliegen oder möglicherweise zu abstrahiert sind. Und es gibt ein paar "kann nicht" -Postings, fast immer gefolgt von "mit 3.5 können Sie jetzt" -Einschränkungen, also ob man mehrdeutig bleiben kann, obwohl zweifellos nicht trivial.
Zusammenfassung:
Wie verschiebe ich eine WordPress-Multisite (WPMS) von root.com nach root / blogs?
In diesem Beispiel verschieben wir ein WPMS von "root.com" nach "root.com/blogs".
Ich verstehe, dass ich die Pfade in der Datenbank und in wp-config.php passend aktualisieren muss. Es scheint, dass ich möglicherweise auch .htaccess aktualisieren muss? Ich bin mir auch des Serialisierungsproblems beim Suchen / Ersetzen und Aktualisieren von MySQL-Abfragen bewusst.
Ich habe ein WPMS, das ich auf 3.5 aktualisiert habe. Ich habe die folgenden Tabellen mit Domain- und Pfadinformationen gefunden
Bestehende Arbeitskonfiguration, bevor Sie in das Unterverzeichnis wechseln
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. Die blog_id entspricht den wp _ # _ -Optionstabellen, die enthalten:
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. In meiner wp-config.php habe ich die folgenden WPMS-spezifischen Zeilen:
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. Schließlich habe ich in meinem .htaccess :
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]
Aktualisierungen, die zum Verschieben der Site erforderlich sind
Es scheint mir, dass ich, um meine Website in die / Blogs zu verschieben, Folgendes tun würde:
1. Aktualisieren Sie wp_blogs auf
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. Aktualisieren Sie wp_site auf
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 _ # _ options
+-------------+--------------------------------+
| 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 );
Anmerkung: Mir ist nicht klar, wie dieser Schritt angemessen aktualisiert wird
5. Zugang
Ich fand vage "Update .htaccess angemessen" Anweisungen, aber keine Besonderheiten. RewriteBase aktualisieren? Welche Zeilen in .htaccess aktualisieren Sie, wenn Sie root.com auf root.com/blogs verschieben?
Bei dem obigen Vorgang fehlen die Pfade, die in Posts gefunden wurden. Meine Druthers sollen das Suchen und Ersetzen-Tool dafür verwenden, nachdem ich diese grundlegenderen Aktualisierungen vorgenommen habe; oder liege ich falsch?
Update bungeshea schlägt vor, dass ich RewriteBase auf das Unterverzeichnis "blogs" zeige, dh
RewriteBase /Blogs
Wenn Sie nicht über http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ Bescheid wissen , sollten Sie dies tun . Es ist exzellent.
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
sollten eher nicht korrekt seinupdate wp_blogs set path=concat('/blogs',path);