По-перше, я прочитав ряд публікацій про цей процес. Однак з різних причин процес залишається складним у здійсненні або усунення несправностей через відсутність навіть абстрагованих прикладів або, можливо, занадто абстрагованих. І є кілька повідомлень "не можна робити", майже завжди дотримуючись "3,5", тепер ви можете "застерегти", тож чи можна залишатись неоднозначним, хоча, без сумніву, нетривіальним.
Підсумок:
Як перемістити багатомісний сайт WordPress (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 на підкаталог "blogs", тобто
RewriteBase /Blogs
Нарешті, якщо ви не знаєте про http://interconnectit.com/products/search-and-replace-for-wordpress-databases/, ви повинні. Це чудово.
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
швидше, повинні бутиupdate wp_blogs set path=concat('/blogs',path);