ประการแรกฉันได้อ่านบทความ จำนวนมากเกี่ยวกับกระบวนการนี้ อย่างไรก็ตามด้วยเหตุผลต่าง ๆ กระบวนการยังคงใช้งานได้ยากหรือแก้ไขปัญหาเนื่องจากไม่มีตัวอย่างที่เป็นนามธรรมหรืออาจเป็นนามธรรมเกินไป และมีโพสต์ "ไม่สามารถทำ" ได้ไม่กี่โพสต์เกือบจะตามมาด้วย "กับ 3.5 ตอนนี้คุณสามารถ" caveats ดังนั้นไม่ว่าใครจะยังคงคลุมเครือแม้ว่าจะไม่มีข้อสงสัยเล็กน้อย
สรุป:
วิธีย้าย wordpress multisite (WPMS) จาก root.com ไปยัง root / blogs?
สำหรับตัวอย่างนี้เรากำลังย้าย WPMS จาก "root.com" เป็น "root.com/blogs"
ฉันเข้าใจว่าฉันต้องอัพเดตพา ธ ในฐานข้อมูลและ wp-config.php อย่างเหมาะสม ดูเหมือนว่าฉันอาจต้องอัปเดต. htaccess ด้วยหรือไม่ ฉันยังตระหนักถึงปัญหาการทำให้เป็นอนุกรมด้วยการค้นหา / แทนที่และการปรับปรุงแบบสอบถาม MySQL
ฉันมี WPMS ที่ฉันอัปเดตเป็น 3.5 ฉันพบตารางต่อไปนี้พร้อมข้อมูลโดเมนและเส้นทาง
การกำหนดค่าการทำงานที่มีอยู่ก่อนที่จะย้ายไปยังไดเรกทอรีย่อย
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 สอดคล้องกับตารางตัวเลือก wp _ # _ ซึ่งประกอบด้วย:
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. ในwp-config.phpฉันมีบรรทัดเฉพาะ WPMS ต่อไปนี้:
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. สุดท้ายใน. 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]
จำเป็นต้องมีการอัพเดตเพื่อย้ายเว็บไซต์
สำหรับฉันที่จะย้ายเว็บไซต์ของฉันไปที่ / บล๊อกฉันจะ:
1. อัปเดต wp_blogs เป็น
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. อัปเดต wp_site เป็น
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 _ # _
+-------------+--------------------------------+
| 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 );
หมายเหตุ:ฉันไม่ชัดเจนว่าขั้นตอนนี้ได้รับการปรับปรุงอย่างเหมาะสมอย่างไร
5. .htaccess
ฉันพบคำแนะนำ "อัปเดต. htaccess อย่างเหมาะสม" ที่คลุมเครือ แต่ไม่เฉพาะเจาะจง อัปเดต RewriteBase หรือไม่ บรรทัดใดใน. htaccess ที่ฉันอัปเดตเมื่อฉันย้าย root.com ไปที่ root.com/blogs
ที่ขาดหายไปจากกระบวนการข้างต้นจะเป็นเส้นทางที่พบในโพสต์ ผู้ชำนาญการของฉันคือการใช้เครื่องมือค้นหาและแทนที่สำหรับสิ่งนั้นหลังจากฉันได้ทำการปรับปรุงขั้นพื้นฐานเพิ่มเติมนี้แล้ว หรือฉันผิด
อัปเดต bungesheaแนะนำว่าใช่ฉันชี้ RewriteBase ไปยังไดเรกทอรีย่อย "บล็อก" เช่น
RewriteBase /Blogs
ในที่สุดหากคุณไม่ทราบเกี่ยวกับhttp://interconnectit.com/products/search-and-replace-for-wordpress-database/คุณควร มันยอดเยี่ยมมาก
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
ควรจะเป็นupdate wp_blogs set path=concat('/blogs',path);