WordPress · 7 мин чтения

Перенос сайта WordPress на другой хостинг без простоя: пошаговая инструкция

Перенос сайта WordPress на другой хостинг я делаю по одной и той же схеме уже который год, разница только в деталях: у кого-то WooCommerce с оплатой через Т‑Банк и синхронизацией с СДЭК, у кого-то самописная интеграция с CRM или телеграм-бот на aiogram, дёргающий сайт по вебхуку. Задача всегда одна: переехать так, чтобы посетители не увидели белый экран, поисковики не потеряли позиции в выдаче, а заказы не терялись в момент переключения DNS. Ниже подробно распишу, как это делается на практике, с реальными сроками и командами.

Подготовка к переносу сайта WordPress на другой хостинг: чек-лист

Перед тем как трогать файлы, я сверяю окружение старого и нового хостинга. Несовпадение версии PHP или отсутствующее расширение на новом сервере всплывает обычно в самый неудобный момент, когда сайт уже переключён на боевой домен.

Параметр Зачем проверять
Версия PHP Плагины и тема могут не работать на PHP 8.2 и выше, если писались под 7.4
Версия MySQL/MariaDB Дамп базы с MySQL 8 не всегда корректно встаёт на старый MariaDB 10.3
Расширения PHP imagick, curl, mbstring, gd - без них перестают работать генерация превью и API-интеграции
Дисковая квота Медиабиблиотека часто весит больше, чем показывает админка WordPress
SSL-сертификат На новом хостинге нужен свой сертификат, старый не переезжает автоматически

Отдельно уточняю доступы: SSH или хотя бы FTP на обоих серверах, доступ к панели управления DNS-записями домена и логин в phpMyAdmin или консоль MySQL. Если доступа к DNS-панели нет и её контролирует, например, регистратор на стороне заказчика, лучше договориться об этом заранее, а не в день переезда.

Резервное копирование сайта перед переносом

Делаю полный бэкап двумя способами параллельно, чтобы не зависеть от одного канала. Первый - через SSH, если он есть на старом хостинге:

tar -czvf site-backup.tar.gz /var/www/site
mysqldump -u user -p database_name > db-backup.sql

Второй способ, если SSH нет и хостинг только на панели вроде cPanel или ISPmanager, использую плагины All-in-One WP Migration или Duplicator. Они собирают файлы и базу в один архив, который потом импортируется на новом сервере через тот же плагин. У бесплатной версии All-in-One WP Migration есть лимит на размер экспортируемого файла, для сайтов с медиатекой больше 512 МБ придётся либо покупать расширение лимита, либо переносить через SSH и rsync.

Важный момент: бэкап делаю не разово, а фиксирую время снятия дампа базы. Если между экспортом и финальным переключением DNS пройдёт несколько дней, на старом сайте могут появиться новые заказы или комментарии, которые нужно будет догрузить отдельно.

Перенос файлов и базы данных WordPress на новый сервер

Файлы переношу через rsync, если SSH есть на обеих сторонах, это быстрее и надёжнее, чем закачка архива через FTP:

rsync -avz -e ssh /var/www/site/ user@new-server:/var/www/site/

Базу импортирую через консоль на новом сервере, а не через phpMyAdmin - для баз больше 100-200 МБ веб-интерфейс часто упирается в лимит времени выполнения скрипта:

mysql -u new_user -p new_database < db-backup.sql

После импорта правлю wp-config.php с новыми данными подключения к базе, а адреса сайта в таблице wp_options меняю через WP-CLI, если старый и новый домен совпадают, но меняется только IP, это не требуется:

wp search-replace 'https://old-domain.ru' 'https://new-domain.ru' --all-tables

Особенности переноса WooCommerce с оплатой Т‑Банк и доставкой СДЭК

Если на сайте стоит WooCommerce с эквайрингом Т‑Банк, после переноса нужно зайти в настройки платёжного модуля и проверить, что webhook-адрес для уведомлений об оплате указывает на новый домен, иначе заказы будут висеть в статусе «Ожидает оплаты» даже после списания денег у клиента. То же самое с интеграцией СДЭК: если расчёт стоимости доставки идёт через API-запрос с сайта, обычно достаточно проверить, что ключ API привязан к домену без ограничений по IP. У некоторых интеграторов в личном кабинете можно закрепить список разрешённых IP-адресов для API-запросов, это тоже нужно обновить под IP нового сервера. Я обычно оформляю такие миграции как отдельную задачу с полной проверкой платёжных и логистических цепочек, потому что заказ, потерянный из-за не пришедшего вебхука, обходится дороже, чем сама миграция.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

Тестирование сайта на новом хостинге без переключения DNS

Чтобы проверить, что всё работает, до смены DNS-записей я открываю сайт по новому IP, подменив адрес домена локально через файл hosts:

103.21.244.10 example.ru
103.21.244.10 www.example.ru

На Windows этот файл лежит в C:\Windows\System32\drivers\etc\hosts, на macOS и Linux в /etc/hosts. После правки сайт открывается в браузере так, будто DNS уже переключён, а для остального интернета домен продолжает вести на старый сервер. В таком режиме проверяю форму обратной связи, оформление тестового заказа, работу личного кабинета, если он есть, и все внешние интеграции: приём вебхуков от Telegram-бота на aiogram (если бот привязан к тому же серверу через веб-хук на конкретный URL), сценарии в n8n, которые дёргают REST API сайта, и корректность SSL-сертификата. Если сертификат ещё не выпущен на новом сервере, браузер будет ругаться на предупреждение безопасности, это нормально на этапе теста и не должно пугать - для боевого запуска сертификат должен быть готов до переключения DNS.

Смена DNS без простоя: как всё синхронизировать

За 24-48 часов до переезда снижаю TTL (Time To Live) у A‑записи домена до 300 секунд. По умолчанию у большинства регистраторов TTL стоит от 3600 до 86400 секунд, и если менять запись без предварительного снижения, часть посетителей будет попадать то на старый, то на новый сервер по нескольку часов, пока не обновится кэш DNS у провайдеров.

Когда TTL снижен и прошло достаточно времени для его применения, меняю A‑запись на IP нового сервера. Дальше в течение 15-40 минут (у большинства крупных DNS-провайдеров быстрее, но закладываю запас) трафик постепенно переключается на новый хостинг. Проверяю распространение записи через dig example.ru или сервисы вроде whatsmydns.net.

Старый сервер я не выключаю ещё 3-5 дней после переключения: часть пользователей и поисковых роботов может обращаться по старому IP из-за кэширования DNS на их стороне, а если на сайте есть форма с приёмом файлов или платежей, лучше подстраховаться и не терять эти обращения.

Типичные ошибки при переносе WordPress на новый хостинг

За десятки переездов чаще всего сталкиваюсь с одним и тем же набором проблем:

  • 404 на всех страницах, кроме главной - забыли настроить правила ЧПУ (permalinks) в новом .htaccess или nginx-конфиге, решается пересохранением настроек постоянных ссылок в админке
  • Смешанный контент (mixed content) - часть ресурсов подгружается по http вместо https из-за старых ссылок в базе, лечится через search-replace или плагин типа Better Search Replace
  • Письма с сайта не доходят - новый сервер имеет непрогретый IP, и почтовые провайдеры помечают письма как спам, здесь помогает переход на SMTP-сервис вроде Postmark или Mailgun вместо встроенной функции mail()
  • Забыли перенести cron-задачи - если на сайте настроен реальный cron вместо wp-cron (что правильно для нагруженных проектов), задачу нужно прописать заново в crontab нового сервера
  • Права на файлы и папки - после rsync с сохранением атрибутов права могут не совпадать с требованиями нового хостинга, обычно нужно выставить 755 для папок и 644 для файлов

Если переезд сложнее, чем просто копирование файлов, например нужно поднять staging-окружение, настроить CI для деплоя или перепроверить кастомные интеграции после миграции, такие задачи я беру как отдельный проект - подробнее про формат работы можно посмотреть на странице услуг.

Частые вопросы

Сколько времени занимает перенос сайта WordPress на другой хостинг?

Для сайта на визитку с базой до 50 МБ весь процесс, включая бэкап, перенос и тестирование, занимает 2-4 часа. Для интернет-магазина на WooCommerce с большой медиатекой и внешними интеграциями закладываю 1-2 рабочих дня с учётом проверки платежей и доставки.

Можно ли перенести сайт без простоя вообще?

При грамотной подготовке (снижение TTL заранее, тестирование через файл hosts, готовый SSL-сертификат на новом сервере) простой сводится к нулю или паре минут на само переключение записи. Полностью его исключить сложно только в случае, если старый хостинг блокирует доступ до оплаты последнего периода.

Что делать, если после переноса сайт открывается с ошибкой подключения к базе данных?

В 90% случаев причина в неверных данных в wp-config.php - имя базы, пользователь, пароль или хост подключения не совпадают с тем, что выдал новый хостинг. Также стоит проверить, что учётной записи MySQL действительно назначены права на эту базу.

Нужно ли уведомлять поисковые системы о переносе сайта?

Если домен не меняется, а меняется только хостинг, уведомлять Яндекс и Google не нужно - для них ничего не меняется на уровне URL. Уведомление через смену адреса в Search Console нужно только если вместе с переносом хостинга меняется и сам домен.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно