it-swarm.com.de

Umzug a WP Multisite in ein Unterverzeichnis

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.

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 funktionierende Konfiguration, 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 Folgendes 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]

Updates, 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 _ # _ Optionen

+-------------+--------------------------------+
| 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 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.

19
Screenack

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)
6
nicmare

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.

2
shea

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!

1
hot_barbara

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:

  1. wp_site domain: xyzabc.com pfad: /

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.

0
Ebe

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

0
Amran