Memindahkan WP Multisite ke subdirektori

20

Pertama, saya sudah membaca sejumlah posting pada proses ini. Namun, karena berbagai alasan, prosesnya tetap sulit untuk diterapkan atau dipecahkan karena tidak ada contoh yang bahkan abstrak, atau mungkin terlalu abstrak. Dan ada beberapa posting "tidak bisa melakukan", hampir selalu ditindaklanjuti dengan "dengan 3,5, Anda sekarang dapat" peringatan, jadi apakah seseorang dapat tetap ambigu, meskipun tidak diragukan lagi non-sepele.

Ringkasan:

Bagaimana cara memindahkan wordpress multisite (WPMS) dari root.com ke root / blog?

Untuk contoh ini, kami memindahkan WPMS dari "root.com" ke "root.com/blogs"

Saya mengerti bahwa saya perlu memperbarui path dalam database dan wp-config.php dengan tepat. Sepertinya saya mungkin juga harus memperbarui .htaccess? Saya juga mengetahui masalah serialisasi dengan pencarian / penggantian dan pembaruan permintaan mysql.

Saya memiliki WPMS yang telah saya perbarui menjadi 3.5. Saya telah menemukan tabel berikut dengan info domain dan jalur

Konfigurasi kerja yang ada sebelum pindah ke subdirektori

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 sesuai dengan tabel opsi wp _ # _ yang berisi:

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. Di wp-config.php saya memiliki baris khusus WPMS berikut:

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. Terakhir, dalam .htaccess saya , saya memiliki:

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]

Diperlukan pembaruan untuk memindahkan situs

Tampaknya bagi saya untuk memindahkan situs saya ke blog, saya akan:

1. Perbarui wp_blogs ke

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. Perbarui wp_site ke

update wp_site set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
select * from  wp_site;
+----+-------------+------------+
| id | domain      | path       |
+----+-------------+------------+
|  1 | root.com    | /blogs/    |
+----+-------------+------------+

3. opsi wp _ # _

+-------------+--------------------------------+
| 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 );

Catatan: Saya tidak jelas bagaimana langkah ini diperbarui dengan tepat

5. .htaccess

Saya menemukan instruksi "perbarui .htaccess dengan tepat", tetapi tidak spesifik. Perbarui RewriteBase? Baris mana dalam .htaccess yang harus saya perbarui ketika saya memindahkan root.com ke root.com/blogs?

Yang hilang dari proses di atas adalah jalur yang ditemukan di pos. Pemabuk saya akan menggunakan alat pencarian dan ganti untuk itu, setelah saya membuat pembaruan yang lebih mendasar ini; atau saya salah?

Perbarui bungeshea menunjukkan bahwa, ya, saya arahkan RewriteBase ke subdirektori "blog", yaitu,

RewriteBase /Blogs

Akhirnya, jika Anda tidak tahu tentang http://interconnectit.com/products/search-and-replace-for-wordpress-databases/ Anda harus. Ini luar biasa.

Screenack
sumber
3
Pertanyaan bagus, proses hebat +1
kaiser
1
Apakah hanya saya? Saya pikir, pertanyaan dalam proses ini tidak benar, update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/'); lebih tepatnyaupdate wp_blogs set path=concat('/blogs',path);
MR

Jawaban:

7

Saya tahu ini sudah tua tetapi saya memperbaikinya! saya menginstal WP MU dalam subfolder. 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);

dan di database Anda, ubah ini:

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)
mimpi buruk
sumber
ini sangat membantu. Saya sudah menginstal subdomain dan database dump dan zip situs. Saya perlu memulihkannya di server baru, dan harus memperbarui situs secara manual. Pembaruan basis data adalah yang paling penting yang harus saya lakukan. Terima kasih!
Jacob Raccuia
2

Kelihatannya saya seolah-olah Anda telah memecahkan masalah Anda sendiri - cukup ikuti langkah-langkah Anda 1-4, dan untuk langkah 5 pembaruan RewriteBasedi .htaccess. Untuk memperbarui jalur dalam posting, saya suka menggunakan alat pencarian-dan-ganti Interconnect IT yang disterilkan .

shea
sumber
Terima kasih, bungshea. Seperti yang saya tunjukkan dalam posting saya, perbarui RewriteBase untuk apa, tepatnya, seperti contoh di atas? Apakah itu: RewriteBase / blog?
Screenack
Ya:RewriteBase /blog
shea
Bungshea; dilakukan, tetapi masih tidak berfungsi. Masih mendapatkan "Kesalahan membangun koneksi database" setelah semua hal di atas. Lebih buruk lagi, tidak ada kesalahan yang dilemparkan ke log kesalahan apache saya.
Screenack
@Screenack apa spesifikasi "Kesalahan dalam membangun koneksi basis data"? Petunjuk: kunjungiwp-admin
shea
1

Oke, inilah yang saya lakukan dan ini berhasil. Tidak ada sub_folder. Situs sebelumnya dikonfigurasi untuk subdomain.

CADANGAN PERTAMA !!!

wp-config.php (ganti blok ini dengan blok di file Anda)

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);

.htaccess

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]

sekarang di SQL DB:

1) untuk setiap wp_ (situs #) _ tablesuffix pergi ke tabel opsi dan ubah siteurl dan home menjadi http://www.sitename.com/blogname

2) wp_blogs untuk setiap blog_id, ubah domain dari blogname.domain.commenjadi domain.comdan path ke/blogname/

3) tidak perlu mengubah wp_options siteurl & home atau sel apa pun di wp_site atau wp_sitemeta jika instal berada di lokasi yang sama.

Setelah Anda selesai pastikan untuk pergi ke (di panel admin superuser) pengaturan> permalinks dan klik simpan.

Voila!

hot_barbara
sumber
0

Ini jawaban pertama saya jadi harap diperhatikan! :)

SAYA TIDAK punya blog yang sudah ada di subdomain yang akan dikonversi. Tetapi saya harus berjuang karena itu adalah blog lama dan mereka tidak akan membiarkan saya membuat blog subdirektori dan saya khawatir WP membuat perubahan pada DB saya pada saat mereka memberi saya kode untuk dimasukkan.

Inilah yang bekerja untuk saya pada April 2018 guys ... Saya menggunakan wp-config dari hot_barbara dan saya menggunakan .htaccess juga dari mereka.

Karena itu, tolong jangan pergi untuk subfolder - Saya tidak!

NAMUN, dalam SQL DB, inilah yang terjadi dalam kasus saya - semuanya sudah seperti ini jadi saya tidak membuat perubahan:

  1. domain wp_site: jalur xyzabc.com: /

domain wp_blogs: jalur xyzabc.com: /

wp_sitemeta siteurl: h ** ps: //xyzabc.com/

Anda akan - seperti yang saya mengerti - menggunakan garis miring jika Anda memilikinya di pengaturan Anda.

Ebe
sumber
0

Tulis ulang Anda wp-config.phpdengan kode ini

define('SUBDOMAIN_INSTALL', false);

dari pada define('SUBDOMAIN_INSTALL', true);

lalu kebagian:

http://www.website.com/wp-admin/network/setup.php

kemudian:

Tambahkan berikut ini ke file .htaccess Anda di /var/www/vhosts/website.com/, ganti aturan WordPress lainnya:

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]

Itu dia.

Buat Situs Baru dengan Subdirektori

Amran
sumber