Я пытаюсь переместить развернутый WordPress Multi-Site в локальную среду. Я создал резервную копию базы данных и файлов сервера. В моей локальной среде я создал новую базу данных и импортировал резервную копию. Я также скопировал файлы сервера на свою локальную машину.
Я сделал следующие шаги:
Я изменил wp-config.php и обновил его новым db-name
, db-username
, db-password
и установил define('DOMAIN_CURRENT_SITE', 'www.mysitename.com');
define('DOMAIN_CURRENT_SITE', 'localhost/mysitename');
,
Я изменил значение option_value
в таблице базы данных wp-option, чтобы указать на мой локальный адрес.
Я также удалил эти строки из .htaccess :
# Redirect non-www urls to www RewriteCond %{HTTP_HOST} !^www\.mysitename\.com RewriteRule (.*) http://www.mysitename.com/$1 [R=301,L]
Но когда я перехожу к 127.0.0.1/mysitename, я получаю эту ошибку: на этой веб-странице есть цикл перенаправления .
И когда я изменяю define('DOMAIN_CURRENT_SITE', 'localhost/mysitename');
define('DOMAIN_CURRENT_SITE', 'localhost');
и я перехожу к адресу 127.0.0.1/mysitename, он показывает мне страницу phpinfo () .
Как я могу исправить свою проблему?
Пожалуйста, объясните, должен ли я установить что-то в файлах .htaccess и wp-config.php .
Огромное спасибо.
Изменить: недавно пришлось перенести многосайтовый сайт еще раз, и это руководство все еще отлично работает с 01 / 03-2016. Редактирование базы данных очень важно, одна ошибка, и вы либо получаете белый экран смерти, либо ошибку, подключаясь к базе данных, поэтому обратите внимание 🙂
Я не мог понять, чтобы разрешить локальные ссылки с протоколом (http: //), поэтому, если вы видите «(http:) localhost», прочитайте его как http: // localhost /. Если бы кто-то мог отредактировать это для меня, это было бы здорово!
Измените wp-config.php, измените имя базы данных, имя пользователя и пароль. Обычно ниже «define» («WP_DEBUG» .. Я определяю «WP_HOME» и «WP_SITEURL», они переопределяют параметры базы данных WordPress для пути к корню. «DOMAIN_CURRENT_SITE» используется для многоузловых установок. Поэтому, если он не является многопользовательским, Не используйте это, если это многопользовательский режим, просто используйте это, а не WP_HOME и WP_SITEURL.
define('WP_HOME', 'http://mysitename.com'); define('WP_SITEURL', 'http://mysitename.com');
Если вы также загрузили .htaccess из localhost, удалите его с сервера.
И вы сделали! Не нужно беспокоиться о внесении изменений в базу данных. Для вашей установки localhost просто определите WP_HOME и WP_SITEURL вместо localhost.
Multisites в WordPress – это боль в попке для миграции, она включает в себя несколько изменений в базе данных, и даже когда вы сделали все правильно, похоже, что они работают только в некоторых случаях без ошибок. Однако это рекомендуемые шаги:
Измените свой wp-config.php с новой информацией о базе данных, добавьте следующие определения:
define('MULTISITE', true); define('SUBDOMAIN_INSTALL', false); // true or false depending if the paths for each multisite is pointed by a subdomain. define('DOMAIN_CURRENT_SITE', 'localhost'); // localhost is the DOMAIN of the new location, so even if the ABS_PATH is localhost/whatever, you should have localhost here. define('PATH_CURRENT_SITE', '/'); define('SITE_ID_CURRENT_SITE', 1); define('BLOG_ID_CURRENT_SITE', 1);
Вы должны иметь все это в файле wp-config.php сайта, который вы пытаетесь экспортировать, поэтому просто скопируйте их туда и отредактируйте DOMAIN_CURRENT_SITE.
Измените свой htaccess следующим образом (Rewritebase / path / должен быть относительным путем, т. Е. Если ваш сайт находится на localhost / mypage, он должен быть «RewriteBase / mypage /»):
# MultiSite RewriteEngine On RewriteBase /subfolder-from-localhost/ 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]
Время редактирования базы данных! Эти шаги необходимо выполнить для каждого дочернего объекта, на котором работает ваш мультисайт, если я набираю таблицу изменений «wp_site», вы должны скопировать ее в wp_site1 / wp_site2 и т. Д. …
В таблице wp_options: измените поля «site_url» и «home» на (http:) localhost / subfolder (без конечной косой черты).
В таблице wp_blogs: измените «domain» на «localhost» и «path» для каждой записи для каждого дочернего сайта в / subfolder / (должен иметь завершающий слэш)
В таблице wp_site: измените «домен» на «localhost» и «путь» на / в подпапку / (должен иметь конечную косую черту)
В таблице wp_sitemeta: измените «siteurl» на полный путь, т. Е. (Http:) localhost / subfolder / (должен иметь завершающую косую черту)
Теперь у вас должен быть доступ к вашей странице, если вы все еще получаете петлю перенаправления или белый экран смерти, дважды проверьте изменения базы данных. Теперь войдите в систему для администратора, и нам нужно изменить некоторые жестко настроенные URL-адреса в базе данных, я обычно делаю это с помощью плагина под названием «Seach and replace», поэтому загрузите и установите этот плагин и используйте его, введя то, что он должен искать ( старый url) и что заменить его (новый url).
Search for: http://mysitename.com Replace with: (http:)localhost
Теперь, надеюсь, у вас есть функциональная миграция мультисайта. Как я уже говорил, я сделал это несколько раз, и это почти кажется случайным, если все работает или нет. Я бы сказал, что у меня был успех с этим подходом, возможно, 6 из 8 раз.
Изменить: добавлен способ миграции многопользовательской.
Вы можете следовать руководству по этой ссылке. Его объяснили очень красиво и очень легко понять.
PS для шага 6 я предлагаю вам использовать плагин Velvet Blues WordPress