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);
Antworten:
Ich weiß, dass es alt ist, aber ich habe es behoben! Ich habe WP MU in einem Unterordner installiert.
htaccess
:wp-config.php
:und ändern Sie dies in Ihrer Datenbank:
quelle
Es scheint mir , als ob Sie Ihr eigenes Problem gelöst haben - nur Ihre Schritte 1-4, folgen und für die Aktualisierung Schritt 5 die
RewriteBase
in.htaccess
. Zum Aktualisieren der Pfade in Posts verwende ich gerne das von Interconnect IT sterilisierte Tool zum Suchen und Ersetzen .quelle
RewriteBase /blog
wp-admin
Ok, hier ist was ich getan habe und das hat funktioniert. Kein Unterordner. Die Site war zuvor für die Unterdomäne konfiguriert.
ERSTE SICHERUNG !!!
wp-config.php (ersetze diesen Block durch den Block in deiner Datei)
.zugang
jetzt in der SQL DB:
1) Wechseln Sie für jedes wp_ (site #) _ tablesuffix zur Optionstabelle und ändern Sie siteurl und home zu
http://www.sitename.com/blogname
2) wp_blogs für jede blog_id ändern die Domain von
blogname.domain.com
nachdomain.com
und den Pfad nach/blogname/
3) Keine Notwendigkeit, wp_options siteurl & home oder Zellen in wp_site oder wp_sitemeta zu ändern, wenn sich die Installation am selben Ort befindet.
Wenn Sie fertig sind, gehen Sie zu Einstellungen> Permalinks (im Superuser-Admin-Bereich) und klicken Sie auf Speichern.
Voila!
quelle
Dies ist meine erste Antwort, sei also bitte rücksichtsvoll! :)
Ich hatte KEIN Blog, das sich bereits in zu konvertierenden Subdomains befand. Aber ich musste kämpfen, weil es ein altes Blog war und sie mich kein Unterverzeichnis-Blog machen ließen, und ich befürchtete, dass WP Änderungen an meiner DB vornahm, als sie mir die Codes zum Einfügen gaben.
Das hat bei mir im April 2018 funktioniert, Leute ... Ich habe die wp-config von hot_barbara und den .htaccess auch von ihnen verwendet.
Bitte suchen Sie daher keinen Unterordner - das habe ich nicht getan!
In der SQL-Datenbank ist dies jedoch in meinem Fall geschehen - alles war bereits so, sodass ich keine Änderungen vorgenommen habe:
wp_blogs domain: xyzabc.com pfad: /
wp_sitemeta siteurl: h ** ps: //xyzabc.com/
Sie würden - wie ich verstehe - einen abschließenden Schrägstrich verwenden, wenn Sie ihn in Ihren Einstellungen hätten.
quelle
Schreiben Sie Ihren
wp-config.php
Code mit diesemanstatt
define('SUBDOMAIN_INSTALL', true);
dann geh zu:
dann:
Fügen Sie Ihrer .htaccess-Datei in /var/www/vhosts/website.com/ Folgendes hinzu, wobei Sie andere WordPress-Regeln ersetzen:
Das ist es.
quelle