Настройка 10 мин чтения

Как перенести WordPress на новый домен

Как переехать на новый домен WordPress без потери трафика: замена адреса в базе с учётом сериализованных данных, 301-редирект, переезд в Яндекс Вебмастере и смена адреса в Google Search Console.

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

Подготовка и бэкап

  1. Настройте новый домен: он должен указывать на хостинг (DNS), а в панели хостинга для него должна быть создана папка сайта.
  2. Сделайте полную копию старого сайта: все файлы и дамп базы данных. Подходящие инструменты есть в каталоге: плагины для бэкапа и переноса.
  3. Если домен меняется вместе с хостингом, сначала перенесите файлы и базу, затем меняйте адрес. Так проще найти причину, если что-то пойдёт не так.
  4. Не отключайте старый домен до завершения переезда, он понадобится для редиректа и подтверждения в вебмастерах.

Шаг 1. Смените адрес сайта

Есть два адреса: Адрес WordPress (URL) (siteurl) и Адрес сайта (URL) (home). Чаще всего они совпадают.

Через админку

Откройте Настройки → Общие, замените оба адреса на новый (с https://) и сохраните. После сохранения вас может выбросить из админки, это нормально: входите уже по новому адресу.

Через wp-config.php

Если админка недоступна, добавьте в wp-config.php выше строки «That’s all, stop editing!»:

define( 'WP_HOME', 'https://new-domain.ru' );
define( 'WP_SITEURL', 'https://new-domain.ru' );

Эти константы переопределяют значения из базы, а поля в Настройки → Общие становятся недоступными для редактирования. После завершения переноса можно оставить константы или убрать их, предварительно исправив значения в базе.

Шаг 2. Замените старый домен в базе данных

Одной смены siteurl и home недостаточно: старый адрес остаётся в содержимом записей, в метаданных, в опциях тем и плагинов, в виджетах и меню.

Нельзя выполнять простой SQL-запрос вида UPDATE ... SET ... = REPLACE(...) по всем полям. В WordPress многие настройки хранятся как сериализованные данные: строка вида s:22:"https://old-domain.ru"; содержит длину значения. Если заменить домен на другой длины, длина в записи не изменится, и WordPress не сможет прочитать этот массив. Настройки темы, виджеты и конструкторы страниц при этом «слетают».

Поэтому используйте инструменты, которые учитывают сериализацию.

WP-CLI

Выполняйте команды в корне сайта. Сначала пробный запуск, который ничего не меняет:

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

Команда покажет, сколько замен будет сделано в каждой таблице. Если результат ожидаемый, выполните замену по-настоящему:

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

Полезные уточнения:

  • если на старом сайте были адреса с www, или с http://, повторите команду для каждого варианта;
  • чтобы не трогать столбец guid (в нём хранятся постоянные идентификаторы записей), добавьте --skip-columns=guid;
  • перед боевым запуском сделайте дамп: wp db export backup.sql.

После замены сбросьте кэш и обновите постоянные ссылки:

wp cache flush
wp rewrite flush

Плагин Better Search Replace

Если WP-CLI недоступен, подойдёт плагин Better Search Replace (раздел Инструменты). Укажите старый и новый адрес, выберите все таблицы, сначала включите режим пробного запуска (dry run) и только потом запускайте реальную замену. Плагин, как и WP-CLI, корректно обрабатывает сериализованные данные.

Шаг 3. Настройте 301-редирект со старого домена

Редирект передаёт посетителей и вес страниц на новый адрес. Он должен вести на тот же путь, а не только на главную: old-domain.ru/page/ → new-domain.ru/page/.

Apache (.htaccess на старом домене)

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-domain\.ru$ [NC]
RewriteRule ^(.*)$ https://new-domain.ru/$1 [R=301,L]

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

Nginx

server {
    listen 80;
    listen 443 ssl;
    server_name old-domain.ru www.old-domain.ru;

    ssl_certificate     /path/to/old-domain-fullchain.pem;
    ssl_certificate_key /path/to/old-domain-privkey.pem;

    return 301 https://new-domain.ru$request_uri;
}

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

Редирект на старом домене нужно держать как минимум несколько месяцев, лучше год и дольше. Старый домен не удаляйте и не отдавайте другому владельцу.

Шаг 4. Сообщите поисковикам о переезде

Для этого оба домена должны быть добавлены и подтверждены в сервисах для вебмастеров.

Яндекс Вебмастер

  1. Добавьте и подтвердите новый сайт.
  2. Откройте старый сайт в Вебмастере и перейдите в раздел переезда сайта (Индексирование → Переезд сайта).
  3. Выберите новый домен и отправьте заявку на склейку.

Важные условия: старый домен не должен быть закрыт от индексации в robots.txt, а редирект должен работать. Если у вас менялся и протокол, и www, выберите главное зеркало на новом сайте.

Google Search Console

  1. Добавьте и подтвердите ресурс для нового домена.
  2. Откройте ресурс старого домена, затем Настройки → Смена адреса.
  3. Выберите новый ресурс и подтвердите действие.

Смена адреса работает только при наличии постраничного 301-редиректа. Подробности про файл индексации смотрите в статье про robots.txt для WordPress.

Шаг 5. Что проверить после переезда

  • Sitemap. Убедитесь, что карта сайта (/sitemap.xml или /wp-sitemap.xml) содержит адреса нового домена, и добавьте её в оба вебмастера для нового ресурса.
  • robots.txt. В строке Sitemap: должен стоять новый домен, а сам сайт не должен быть закрыт от индексации. Проверьте Настройки → Чтение: галочка «Попросить поисковые системы не индексировать сайт» должна быть снята.
  • SSL. На новом домене должен быть выпущен сертификат, а страницы должны открываться по HTTPS без предупреждений о смешанном содержимом.
  • Постоянные ссылки. Откройте Настройки → Постоянные ссылки и нажмите «Сохранить изменения», чтобы обновить правила.
  • Яндекс Метрика и Google Analytics. Обновите адрес сайта в настройках счётчика. Код счётчика проверьте в шаблоне и в плагинах.
  • Формы и почта. Отправьте тестовое письмо из формы обратной связи. Если используется SMTP-плагин, проверьте адрес отправителя и записи SPF/DKIM для нового домена.
  • Внешние сервисы. Платёжные системы, API-ключи с привязкой к домену, социальная авторизация, вебхуки, CDN, карты Google и reCAPTCHA нужно перенастроить на новый адрес.
  • Битые ссылки и картинки. Пройдите по основным страницам, проверьте изображения, меню и подвал. Если остались жёсткие ссылки на старый домен, найдите их повторным запуском wp search-replace с --dry-run.

Если не получилось

Если после смены домена пропали картинки, сломалась вёрстка или поисковики не склеивают сайты, лучше не повторять замены вслепую. Мы можем выполнить перенос и проверить все шаги: перенос WordPress на хостинг.

Оставить заявку

Опишите, что нужно сделать, — ответим в течение рабочего дня и назовём сроки и стоимость.