Erstens habe ich geleseneine Reihe von Beiträgen zu diesem Prozess. 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" -Hinweisen, also ob man mehrdeutig bleiben kann, obwohl zweifellos nicht trivial.
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
select blog_id, domain, path from wp_blogs;
+---------+-------------+--------+
| blog_id | domain | path |
+---------+-------------+--------+
| 1 | root.com | / |
| 2 | root.com | /matt/ |
+---------+-------------+--------+
select * in wp_site;
+----+-------------+------+
| id | domain | path |
+----+-------------+------+
| 1 | root.com | / |
+----+-------------+------+
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/ |
+-------------+--------------------------+
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 );
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]
Es scheint mir, dass ich, um meine Website in die/Blogs zu verschieben, Folgendes tun würde:
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/ |
+---------+-------------+--------------+
update wp_site set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select * from wp_site;
+----+-------------+------------+
| id | domain | path |
+----+-------------+------------+
| 1 | root.com | /blogs/ |
+----+-------------+------------+
+-------------+--------------------------------+
| option_name | option_value |
+-------------+--------------------------------+
| home | http://root.com/blogs/matt/ |
| siteurl | http://root.com/blogs/matt/ |
+-------------+--------------------------------+
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
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 Such- und Ersetzungswerkzeug dafür verwenden, nachdem ich diese grundlegenderen Aktualisierungen vorgenommen habe; oder liege ich falsch?
Updatebungeshea legt nahe, dass ich RewriteBase auf das Unterverzeichnis "blogs" verweise, d. H.
RewriteBase /Blogs
Schließlich, wenn Sie nicht über http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ Bescheid wissen, sollten Sie. Es ist exzellent.
Ich weiß, dass es alt ist, aber ich habe es behoben! Ich habe WP MU in einem Unterordner installiert. htaccess
:
RewriteEngine On
RewriteBase /YOUR_SUBFOLDER
RewriteRule ^index\.php$ - [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).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule ^(.*\.php)$ YOUR_SUBFOLDER/$1 [L]
RewriteRule . index.php [L]
wp-config.php
:
define( 'WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'localhost'); // or your Host
define('PATH_CURRENT_SITE', '');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
und ändern Sie dies in Ihrer Datenbank:
wp_site
domain: localhost (OR your domain but no subdirectory!)
path: /
wp_blogs
domain: localhost (OR your domain but no subdirectory in each blog_id!)
path: /
wp_sitemeta
siteurl: http://localhost/YOUR_SUBFOLDER (replace localhost with your Host)
Es sieht für mich so aus, als hätten Sie Ihr eigenes Problem gelöst - befolgen Sie einfach die Schritte 1 bis 4 und aktualisieren Sie für Schritt 5 die RewriteBase
in .htaccess
. Zum Aktualisieren der Pfade in Posts verwende ich gerne das Interconnect IT-sterilisierte Search-and-Replace -Tool.
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)
define('WP_ALLOW_MULTISITE', true );
define('MULTISITE', true);
define('SUBDOMAIN_INSTALL', false);
define('DOMAIN_CURRENT_SITE', 'no-www-in-sitename.com'); // your Host
define('PATH_CURRENT_SITE', '/');
define('SITE_ID_CURRENT_SITE', 1);
define('BLOG_ID_CURRENT_SITE', 1);
.zugang
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [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).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
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
zu domain.com
und den Pfad zu /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-Administratorbereich) und klicken Sie auf Speichern.
Voila!
Dies ist meine erste Antwort, sei also bitte rücksichtsvoll! :)
Ich habe DID 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.
Schreiben Sie Ihren wp-config.php
mit diesem Code um
define('SUBDOMAIN_INSTALL', false);
anstelle von define('SUBDOMAIN_INSTALL', true);
dann geh zu:
http://www.website.com/wp-admin/network/setup.php
dann:
Fügen Sie Ihrer .htaccess-Datei in /var/www/vhosts/website.com/ Folgendes hinzu, wobei Sie andere WordPress-Regeln ersetzen:
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [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).*) $2 [L]
RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L]
RewriteRule . index.php [L]
Das ist es.
Erstellen Sie eine neue Site mit Unterverzeichnis