Во-первых, я прочитал несколько сообщений об этом процессе. Однако по разным причинам процесс остается сложным для реализации или устранения неполадок из-за отсутствия даже абстрактных примеров или, возможно, слишком абстрактных. И есть несколько постов «не могу сделать», за которыми почти всегда следуют «с 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]
Обновления, необходимые для перемещения сайта
Мне кажется, что для того, чтобы переместить мой сайт в / blogs, я бы:
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-databases/, вам следует. Это отлично
update wp_blogs set domain=concat(domain, '/blogs'), path=concat(path, 'blogs/');
скорее должно бытьupdate wp_blogs set path=concat('/blogs',path);
Ответы:
Я знаю, что он старый, но я исправил это! я установил WP MU в подпапке.
htaccess
:wp-config.php
:и в вашей базе данных измените это:
источник
Он смотрит на меня , как если бы вы решить свои собственные проблемы - просто следовать вашим шагам 1-4, и шаг 5 обновления
RewriteBase
в.htaccess
. Для обновления путей в сообщениях мне нравится использовать стерилизованный инструмент Interconnect для поиска и замены .источник
RewriteBase /blog
wp-admin
Хорошо, вот что я сделал, и это сработало. Нет подпапки. Сайт был ранее настроен на поддомен.
BACKUP FIRST !!!
wp-config.php (замените этот блок на блок в вашем файле)
.htaccess
Теперь в БД SQL:
1) для каждого wp_ (site #) _ tablesuffix перейдите в таблицу параметров и измените siteurl и home на
http://www.sitename.com/blogname
2) wp_blogs для каждого blog_id изменить домен с
blogname.domain.com
наdomain.com
и путь к/blogname/
3) нет необходимости изменять wp_options siteurl & home или любые ячейки в wp_site или wp_sitemeta, если установка находится в том же месте.
После того, как вы закончите, обязательно перейдите (в админ-панели суперпользователя) в настройки> постоянные ссылки и нажмите Сохранить.
Вуаля!
источник
Это мой первый ответ, поэтому будьте внимательны! :)
У меня не было блога, который уже был в поддоменах для конвертации. Но мне пришлось бороться, потому что это был старый блог, и они не позволили мне создать блог подкаталога, и я боялся, что WP внес изменения в мою БД к тому времени, когда они дали мне коды для вставки.
Это то, что у меня сработало в апреле 2018 года, ребята ... Я использовал wp-config от hot_barbara и также использовал .htaccess от них.
Поэтому, пожалуйста, не переходите на подпапку - я не сделал!
ОДНАКО, в SQL DB, это то, что произошло в моем случае - все уже было так, поэтому я не внес никаких изменений:
Домен wp_blogs: путь xyzabc.com: /
wp_sitemeta siteurl: h ** ps: //xyzabc.com/
Как я понимаю, вы бы использовали косую черту, если бы она была в ваших настройках.
источник
Перепишите ваш
wp-config.php
кодвместо того
define('SUBDOMAIN_INSTALL', true);
затем перейдите:
тогда:
Добавьте следующее в ваш файл .htaccess в /var/www/vhosts/website.com/, заменив другие правила WordPress:
Вот и все.
источник