Если вы пробовали перенести сайт WordPress на другой домен классическим способом — просто перенеся дамп БД и файлы — то наверняка столкнулись с тем, что после этого сайт не работает, или перенаправляет вас на старый домен.
В этой записи мы разберемся, почему так происходит, а также рассмотрим, как перенести сайт WordPress на другой домен и хостинг.
Почему не работает WordPress после смены домена
Суть в том, что WP записывает домен в базе данных и привязывается к домену таким образом. Поэтому и работать система будет только с ним. Соответственно, при смене домена, в БД необходимо также указать новый домен.
Есть нюанс: многие записи с доменом записаны в сериализованые массивы, и если (что скорее всего так и есть) новый домен по количеству символов отличается от старого, то просто заменить адрес сайта не получится. В лучшем случае, после такой замены вам придется заново настраивать и наполнять сайт.
Вывод: нужны инструменты, которые учтут все нюансы и помогут корректно перенести сайт
Как перенести сайт WordPress на другой домен или хостинг
При переезде на другой хостинг, чаше всего удобно воспользоваться плагином Duplicator. Для простой смены домена или переезда объемного сайта, удобней воспользоваться PHP-скриптом Search Replace DB. Также Search Replace DB можно воспользоваться, если не удается переехать с помощью Duplicator.
Рассмотрим оба инструмента.
Плагин Duplicator
С помощью Duplicator удобно переносить сайт WordPress с одного хостинга на другой. Если сайт весит меньше 1,5 гб и нужен именно переезд с хостинга на хостинг — то лучше воспользоваться Duplicator.
Это оптимальное решение для проектов объемом до 1,5 гб, т.к. за работу с сайтами объемом больше, Duplicator потребует покупку лицензии.
Плагин можно установить и активировать из магазина WordPress:
После активации слева внизу у нас появится пункт меню «Duplicator«.
Для создания резервной копии переходим в Duplicator и нажимаем на кнопку «Создать новый«
После этого откроется страница, где можно настроить вашу резервную копию.
Например, можно сделать бекап всего сайта или только Базы данных. Это удобно в ситуации, когда сам сайт весит больше 1,5гб, а БД — меньше. В этом случае вы можете перенести отдельно БД с помощью Duplicator, а файлы перенести на новый хостинг классическим способом. Тогда вам, скорее всего, потребуется только указать в файле wp-config.php новые данные для подключения к БД.
Также вы можете защитить свой бекап с помощью пароля. Это полезно, если есть опасение, что кто-то может получить доступ к вашей резервной копии.
После всех настроек нажимаем на кнопку «Далее«.
На следующей странице Duplicator просканирует сайт и сообщит о проблемах для бекапа, если они есть. Если проблемы есть — можно их проигнорировать, хотя они могут стать причиной некорректного создания бекапа. В это случае их, конечно, нужно устранить.
После сканирования нажимаем «Создание» и ждем, пока плагин создаст бекап сайта. Возможно, придется подождать несколько минут.
У меня кстати, при попытке создания бекапа возникла ошибка: сервер завершил работу скрипта.
В этом случае можно обратиться в поддержку хостинга и попросить увеличить время тайм-аута, либо сделать только бекап БД.
После создания бекапа плагин предложит скачать два файла: архив с бекапом сайта и файл-установочник. Скачиваем оба.
При скачивании хром может попросить разрешение скачать сразу оба файла.
Далее, загружаем оба файла на новый хостинг в корень сайта и открываем его по адресу:
https://<адрес нового сайта>.ru/installer.php
Важно: проверьте, чтобы версия PHP была такая-же, как на старом хостинге, либо версия была не ниже. Лучше конечно всегда использовать самую свежую версию PHP, но если сайт старый, то многое на нем может перестать работать при обновлении версии PHP. В этом случае лучше обратиться к специалисту для устранения проблем.
Также проверьте, чтобы на новом хостинге был установлен SSL-сертификат для корректной и безопасной работы сайта
После перехода по новому адресу откроется такая страница:
Указываем в форме название БД, имя пользователя и пароль. В поле «host» обычно указывают «localhost«. Но на некоторых хостингах нужно указать либо значение «127.0.0.1» (например, если используете XAMMP), либо другой хост, который предоставил вам хостинг-провайдер.
Далее нажимаем «Validate«.
Проверьте, чтобы ваша БД была создана до того, как нажмете на кнопку «Validate«
Если вы указали все правильно и нет никаких ошибок, то откроется такая страница:
Там нужно согласиться с условиями и нажать на кнопку «Next«, после нее откроется pop-up-окно, там нажимаем «Ок«, после чего начнется распаковка бекапа.
При успешной распаковке появится такая страница:
На ней обязательно оставляем отмеченной галочку «Auto delete installer files after login to secure site (recommended!)«, нажимаем на кнопку «Admin Login» и авторизуемся в админке сайта. Все эти действия необходимо сделать, чтобы удалить бекап на новом хостинге и все скрипты, с помощью которых шла распаковка. В противном случае вы оставляете уязвимость для взлома сайта!
После этого сайт должен заработать на новом хостинге 🙂
Скрипт Search Replace DB
Это профессиональный инструмент для более тонкой работой с БД. Им можно воспользоваться как альтернативной для переноса БД на новый домен, но важно быть крайне осторожным и не оставлять публичного доступа к нему на вашем хостинге.
Рассмотрим как им пользоваться.
Способ по-проще, небезопасный
Переходим по этой ссылке — https://github.com/interconnectit/Search-Replace-DB
Скрипт можно клонировать при помощи git, либо просто скачать архивом по кнопке:
Далее переносим архив в корень сайта, распаковываем архив и переходим по ссылке:
https://<адрес вашего сайта>.ru/Search-Replace-DB-master
Откроется такое окно:
На странице указываем старый домен, новый домен, данные для подключения к новой БД. Потом нажимаем на кнопку «Test Connection«. Если все отработало без ошибок, то нажимаем на кнопку «Search and Replace» и ждем, пока отработает скрипт. После отработки скрипта увидим такой отчёт:
Если все прошло ок и вы указали в wp-config.php новые данные для подключения к БД, то после отработки скрипта сайт должен начать открываться.
Обязательно! Удалите этот скрипт после работы с ним!
Способ по-сложнее, менее опасный
По разным причинам этот скрипт может не отработать в браузере. Например у меня в XAMPP он не работает. В этом случае со скриптом можно поработать через терминал. Также это полезный способ в случае, если домен еще не переключился на новый хостинг а вы не хотите ждать. От того этот способ и безопасней: для работы со скриптом не обязательно иметь доступ к нему из браузера или другого http-клиента.
При работе со скриптом на хостинге через терминал, вам потребуется подключиться по SSH.
Инструкция по работе.
Скрипт скачиваем как и раньше. Но загружаем его не в корень сайта а выше. На хостингах чаще всего файловая система сайта имеет такую структуру:
<адрес сайта>.ru/public_html — в public_html как раз находится корень сайта, куда есть доступ по http.
Мы-же можем загрузить скрипт в директорию <адрес сайта>.ru
После этого в терминале переходим в эту папку. При подключении по SSH вам для этого, скорее всего нужно будет выполнить такую команду:
cd feodoraxis.ru
feodoraxis.ru, конечно, меняем на адрес вашего сайта.
Далее переходим в директорию Search-Replace-DB или Search-Replace-DB-master — название может быть разным, в зависимости от того, как вы скачали скрипт.
cd Search-Replace-DB
И уже здесь мы можем выполнить ту-же операцию, что и в примере выше. Для этого нужно выполнить такую команду:
php srdb.cli.php -h localhost -n dbName -u userName -p "userPassword" -s "https://old-domain.ru" -r "https://new-domain.ru"
Разберем команду по частям:
- php — это название программы, которую мы используем. В данном случае PHP выступает как программа
- srdb.cli.php — название файла, к которому мы обращаемся. Т.е. вызывая PHP, мы сразу указываем файл, который нужно исполнить.
Многие хостинги по умолчанию по команде «php» в терминале предоставляют старые версии PHP. А для работы скрипта нужна версия не ниже 7.4. При этом часто хостинги дают возможность выбирать версию PHP в терминале. Как правило, для этого можно вызвать команду «php7.4», где 7.4 — версия PHP. Если не сработает — обратитесь к вашему хостинг-провайдеру
Далее по команде идут параметры, с которым мы хотим, чтобы отработал скрипт. Параметры указываются в формате «-<название параметра> <значение параметра>«. Рассмотрим их:
- -h — название хоста. Чаще всего указывают localhost. Например: -h localhost
- -n — имя Базы Данных. Например: -n dbName, где dbName — название вашей БД
- -u — имя пользователя БД. Например: -u userName, где userName — имя пользователя. Обычно совпадает с названием БД
- -p — пароль пользователя. Значение указывается в кавычках. Например: -p «userPassword», где userPassword — пароль пользователя
- -s — старый домен. Значение указывается в кавычках. Например: -s «https://old-domain.ru», где https://old-domain.ru — старый домен
- -r — новый домен. Значение указывается в кавычках. Например: -s «https://new-domain.ru», где https://new-domain.ru — новый домен
После того как мы ввели команду, можем ее выполнить. Для этого нажимаем Enter и ждем, пока не отработает скрипт.
Кстати из терминала скрипт отрабатывает гораздо быстрее.
На этом всё. Успехов!