Переносим сайт на WordPress без простоя и без потери позиций

Как перенести сайт на WordPress с одного хостинга на другой, сохранив адреса страниц, сертификат SSL и позиции в поиске.

Обзор

Перенос сайта на WordPress часто пугает: боятся простоя, потери позиций, испорченных данных. При верном подходе перенос WordPress проходит незаметно и для посетителей, и для Google.

В руководстве разобраны два пути: через расширение (быстро, годится примерно до 1 ГБ) и вручную (больше контроля, для крупных сайтов). Здесь же подготовительные шаги (TTL в DNS, ревизия расширений), список проверок после переноса (SSL, перенаправления, карта сайта для Google) и перечень ловушек, из-за которых теряются позиции или ломается сайт (неверный перенос базы с сериализованными строками, забытый wp-config, плохо перевыпущенные сертификаты SSL).

До переноса: подготовить почву

Удачный перенос WordPress начинается за 48 часов до переключения. Три подготовительных действия резко снижают риск:

  1. Снизить TTL в DNS вашего домена до 300 секунд (5 минут) минимум за 48 часов до переноса. Обычное значение — 3600-86400 с, из-за чего изменения могут расходиться по сети до суток. При TTL в 300 с обновление занимает, как правило, меньше 30 минут. Меняется у регистратора (OVH, Gandi, Cloudflare).
  2. Проверить расширения и темы перед переносом. Удалите отключённые расширения, те, что помечены «несовместимо с вашей версией PHP», и неиспользуемые темы. За 5 лет сайт на WordPress обычно накапливает 30-50 % устаревших или дублирующих расширений. Перенос — хороший повод прибраться.
  3. Выписать всё важное: версию PHP (смотрите wp-admin/site-health.php), базу данных (размер, версия MySQL или MariaDB), нужные расширения PHP (imagick, curl, mbstring, gd), задания по расписанию, сертификаты SSL, свои перенаправления в .htaccess. По этому списку окружение воспроизводится один в один.
  4. Режим обслуживания — по желанию: если 15 минут недоступности допустимы, расширение WP Maintenance Mode покажет страницу ожидания на время переключения. Для интернет-магазинов и очень посещаемых сайтов лучше плавный перенос без такого режима.

Способ 1: через расширение (рекомендуемый)

  1. Полная резервная копия перед переносом: UpdraftPlus, BackWPup или All-in-One WP Migration
  2. Поставить чистый WordPress на новом хостинге
  3. Развернуть копию через расширение
  4. Проверить сайт по временному адресу или поддомену нового хостинга
  5. Переключить DNS домена на новый хостинг (с коротким TTL)
  6. Перевыпустить SSL на новом хостинге после того, как DNS разойдётся

Способ 2: перенос вручную (крупные сайты, интернет-магазины)

Для сайтов больше 1 ГБ или для WooCommerce с тысячами заказов ручной путь надёжнее. Порядок такой:

  1. Выгрузить базу данных через phpMyAdmin или по SSH: mysqldump -u utilisateur -p ma_base > db_backup.sql. Для крупных сайтов добавьте --single-transaction --quick, чтобы не блокировать базу.
  2. Скопировать файлы WordPress по FTP/SFTP или через rsync: rsync -avz -e ssh ./wp-content/ utilisateur@nouveau-serveur:/var/www/html/wp-content/. Rsync, переносящий только изменения, заметно сокращает время.
  3. Создать новую базу на новом хостинге (cPanel/Plesk → MySQL Databases), затем загрузить: mysql -u utilisateur -p ma_base_nouvelle < db_backup.sql.
  4. Поправить wp-config.php, вписав новые данные базы (DB_NAME, DB_USER, DB_PASSWORD, DB_HOST). Ключи безопасности (AUTH_KEY и остальные) оставьте прежними, иначе всех пользователей выкинет из учётных записей.
  5. Обновить адреса, если они меняются: если переезжает и домен, возьмите WP-CLI (wp search-replace 'ancien-domaine.com' 'nouveau-domaine.com' --skip-columns=guid) — он правильно обходится с сериализованными строками PHP. Обычный UPDATE в SQL поломал бы виджеты и сериализованные настройки.
  6. Проверить на временном поддомене: migration.nouveau-serveur.com через правку файла hosts на своём компьютере (публичный DNS не трогаем). Проверьте главную страницу, записи, формы, оплату (если это магазин) и служебные письма.
  7. Переключение DNS: обновите записи A и AAAA у регистратора. При заранее выставленном TTL в 300 с обновление расходится за считаные минуты.

Способ 3: бесплатный перенос силами By-Hoster

Если вы переезжаете к By-Hoster, наши инженеры переносят сайт бесплатно. Вы даёте доступ по FTP или в cPanel на старом хостинге, а мы делаем всё остальное — без простоя, в срок, который зависит от размера сайта и подтверждается в заявке. Входит: перенос файлов и базы, перенастройка wp-config, выпуск сертификата Let's Encrypt, проверки после переноса и согласованное переключение DNS. Доступ к старому хостингу остаётся у вас ещё 14 дней — чтобы всё сверить.

Список проверок после переноса: 12 пунктов

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

  • Сайт открывается по HTTP и HTTPS: проверьте в 3-4 браузерах и на телефоне. Пройдитесь по основным страницам (главная, контакты, корзина, если это магазин).
  • Сертификат Let's Encrypt выпущен и работает: curl -I https://votredomaine.com должен вернуть 200 OK с действующим сертификатом. После смены DNS на это уходит 5-30 минут.
  • Постоянные ссылки работают: откройте 5-10 записей наугад. Если видите ошибку 404, зайдите в wp-admin → Настройки → Постоянные ссылки и нажмите «Сохранить» (это пересоздаст .htaccess).
  • Изображения загружаются: нажмите Ctrl+F5 на главной. Если картинок нет, проверьте права на wp-content/uploads (755 для папок, 644 для файлов).
  • Формы обратной связи: отправьте пробное сообщение. Убедитесь, что письмо пришло. Если нет — настройте SMTP (WP Mail SMTP) через внешнюю службу (Mailgun, SendGrid).
  • Вход в wp-admin: войдите, вместе с двухфакторной проверкой, если она включена. При ошибке «файлы cookie заблокированы» очистите кеш браузера и попробуйте в приватном окне.
  • WooCommerce (если используется): проведите пробную покупку (режим «test» у Stripe или PayPal). Проверьте письма-подтверждения, списание со склада и создание счёта в PDF.
  • Задания WordPress по расписанию: убедитесь, что они выполняются (wp cron event list через WP-CLI). Отключите встроенный WP-Cron и настройте системный: * * * * * curl https://votredomaine.com/wp-cron.php?doing_wp_cron > /dev/null 2>&1.
  • Быстродействие: прогоните PageSpeed Insights. Если оценка ниже 80, проверьте, включён ли кеш (LiteSpeed Cache, WP Rocket, W3 Total Cache), работает ли сжатие Brotli/Gzip и отложенная загрузка изображений.
  • Карта сайта отправлена в Google Search Console: при смене адреса Google может вернуться к обходу через 24-72 часа. Поторопите его: Search Console → Файлы Sitemap → отправить адрес.
  • Старые перенаправления 301: если переезжает и домен, пропишите 301 на старом хостинге через .htaccess: RewriteRule ^(.*)$ https://nouveau-domaine.com/$1 [R=301,L]. Держите их минимум 12 месяцев, чтобы сохранить вес входящих ссылок.
  • Сутки под наблюдением: бесплатная служба вроде UptimeRobot или Hyperping заметит перебои и предупредит письмом или сообщением. Первые двое суток поглядывайте и на журнал ошибок PHP (tail -f /var/log/php/error.log).

Частые ловушки и как их обойти

  • Испорченные сериализованные строки: если переносить с бесхитростной заменой прямо в SQL, сериализованные настройки PHP (виджеты, настройщик темы, конструкторы страниц) сломаются. ВСЕГДА пользуйтесь WP-CLI или расширением вроде Better Search Replace, которое понимает сериализацию.
  • SSL не перевыпущен после переноса: сертификат Let's Encrypt привязан к адресу и домену, поэтому на новом хостинге его нужно создать заново. Старые сертификаты не переезжают.
  • Неверный wp-config.php: забытый DB_HOST (иногда это «localhost», иногда IP-адрес) или оставшаяся старая строка WP_DEBUG=true, из-за которой ошибки видны прямо на работающем сайте.
  • Встроенный WP-Cron не заменён: на старом хостинге он запускался вместе с посещениями. Если забыть отключить встроенный WP-Cron и настроить настоящее системное расписание, задания (резервные копии, рассылки, плановые обновления) перестанут выполняться как надо.
  • Устаревший кеш: старый кеш сети доставки (Cloudflare, BunnyCDN) всё ещё указывает на прежний сервер. Очистите его после переноса: в Cloudflare — «Purge Everything», в BunnyCDN — «Clear Cache».
  • Сломанная карта сайта XML: Yoast и Rank Math пересобирают её сами, но проверьте, открывается ли она по адресу https://votredomaine.com/sitemap_index.xml. Отправьте её в Search Console заново.
  • DNS разошёлся не до конца: если старый TTL так и остался равным суткам, часть посетителей ещё целый день будет видеть прежний сайт. Именно поэтому так важно заранее выставить TTL в 300 с.

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

Нет, если адреса страниц остаются ровно теми же, а DNS переключается аккуратно (короткий TTL, выставленный заранее). Google видит лишь другой адрес сервера: содержимое и структура прежние.

Обычный сайт меньше 1 ГБ через расширение: от 1 до 3 часов. Средний сайт на 1-5 ГБ вручную: от 4 до 8 часов. Крупный магазин с тысячами товаров: 1-2 дня (подготовка, проверки, переключение по расписанию). Бесплатный перенос силами By-Hoster выполняется по согласованию с вами, в срок, который подтверждается в заявке в зависимости от размера сайта.

Если домен остаётся прежним — нет, Google сам заметит смену адреса сервера за 24-72 часа. Если домен меняется — да: настройте перенаправления 301, а затем воспользуйтесь инструментом «Смена адреса» в Google Search Console. Иначе набранные позиции пропадут.

При переносе расширением и коротком TTL в DNS простой обычно составляет от 0 до 5 минут — пока обновление расходится по сети. При хорошо подготовленном ручном переносе можно рассчитывать на полное отсутствие простоя: новый сервер поднимается параллельно, проверяется через файл hosts на своём компьютере, и лишь потом переключается DNS.

Нам нужны: доступ по SFTP или FTP к старому хостингу (достаточно только для чтения), доступ к phpMyAdmin или выгрузка базы в SQL, а также доступ к управлению DNS (у регистратора: OVH, Gandi, Cloudflare и прочих), чтобы в нужный момент переключить записи. После переноса никакие важные сведения у нас не остаются.

Все — нет, но расширения кеширования отключить надо до выгрузки (W3 Total Cache, WP Rocket, LiteSpeed Cache), иначе устаревшие файлы кеша вызовут ошибки на новом сервере. После переноса включите их снова и очистите кеш. С защитными расширениями (Wordfence, Sucuri) так же: выключить до выгрузки, включить после.

Да, но это сложнее: WordPress.com (размещённая версия) ограничивает доступ к файлам. Порядок такой: 1) выгрузите содержимое через Outils → Exporter в wp-admin (получится файл XML); 2) поставьте WordPress.org на своём хостинге; 3) загрузите XML через Outils → Importer → WordPress. Так переезжают записи, страницы, файлы и комментарии, но не платные темы WordPress.com — их придётся купить заново или заменить. Закладывайте 4-8 часов вместе с правкой оформления.