Смена домена — это не только перенос файлов. В базе WordPress десятки мест хранят старый адрес: ссылки в записях, пути к изображениям, настройки темы и виджетов. Если пропустить хотя бы один шаг, сайт может остаться без картинок, а поисковики не поймут, что старый и новый адрес — один и тот же сайт. Разберём порядок действий, чтобы переехать на новый домен WordPress без потерь.
Подготовка и бэкап
- Настройте новый домен: он должен указывать на хостинг (DNS), а в панели хостинга для него должна быть создана папка сайта.
- Сделайте полную копию старого сайта: все файлы и дамп базы данных. Подходящие инструменты есть в каталоге: плагины для бэкапа и переноса.
- Если домен меняется вместе с хостингом, сначала перенесите файлы и базу, затем меняйте адрес. Так проще найти причину, если что-то пойдёт не так.
- Не отключайте старый домен до завершения переезда, он понадобится для редиректа и подтверждения в вебмастерах.
Шаг 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. Сообщите поисковикам о переезде
Для этого оба домена должны быть добавлены и подтверждены в сервисах для вебмастеров.
Яндекс Вебмастер
- Добавьте и подтвердите новый сайт.
- Откройте старый сайт в Вебмастере и перейдите в раздел переезда сайта (Индексирование → Переезд сайта).
- Выберите новый домен и отправьте заявку на склейку.
Важные условия: старый домен не должен быть закрыт от индексации в robots.txt, а редирект должен работать. Если у вас менялся и протокол, и www, выберите главное зеркало на новом сайте.
Google Search Console
- Добавьте и подтвердите ресурс для нового домена.
- Откройте ресурс старого домена, затем Настройки → Смена адреса.
- Выберите новый ресурс и подтвердите действие.
Смена адреса работает только при наличии постраничного 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 на хостинг.