Простая замена адреса в настройках WordPress не переносит сайт на новый домен: старый URL остаётся в тысячах записей базы данных, включая сериализованные массивы настроек конструкторов страниц. Разбираем правильный порядок смены домена без поломки вёрстки.
Почему нельзя просто поменять адрес в настройках
Адрес сайта хранится не только в двух полях siteurl и home таблицы wp_options. Ссылки на старый домен разбросаны по содержимому записей, метаполям, настройкам меню и виджетов, а часть плагинов и конструкторов страниц вроде Elementor хранит настройки в виде сериализованных PHP-массивов. Если заменить в них домен обычным поиском-заменой в тексте, длина строки в сериализованных данных не совпадёт с реальной, и PHP не сможет разобрать массив — блоки на странице перестанут отображаться.
Подготовка: бэкап и вычисление объёма правок
Перед любыми правками базы данных сделайте полный бэкап файлов и базы — порядок описан в статье WordPress бэкап: UpdraftPlus и ручной метод. Затем посчитайте, сколько записей содержит старый адрес:
# Посчитать число упоминаний старого домена в базе данных
wp db query "SELECT COUNT(*) FROM wp_options WHERE option_value LIKE '%old-domain.com%'"
Если результат больше нуля хотя бы в одной таблице — обычный SQL-запрос UPDATE опасен, нужен инструмент, который умеет работать с сериализованными данными.
Замена URL через WP-CLI: безопасный способ
Команда wp search-replace умеет находить и корректно пересчитывать длину строк внутри сериализованных массивов — это главное отличие от обычного SQL-запроса:
# Сначала проверить список изменений без записи в базу (dry run)
wp search-replace 'old-domain.com' 'new-domain.com' --dry-run
# Выполнить замену по всем таблицам, включая мультисайт
wp search-replace 'old-domain.com' 'new-domain.com' --all-tables
Флаг --dry-run покажет количество затронутых строк в каждой таблице без реальной записи — обязательно проверьте цифры перед боевым запуском. Полный список похожих команд WP-CLI для работы с базой — в статье Команды WP-CLI: поиск-замена в БД и создание админа.
Что проверить после замены домена
После выполнения search-replace пройдите по контрольным пунктам:
| Что проверить | Где смотреть |
|---|---|
| Изображения и файлы в записях | Открыть 3-4 старые записи и проверить, что картинки загружаются |
| Настройки Elementor и других конструкторов | Открыть страницу в редакторе конструктора, а не только на фронте |
| Меню и виджеты | Раздел «Внешний вид → Меню», проверить пункты меню вручную |
| Постоянные ссылки | Настройки → Постоянные ссылки → Сохранить изменения |
Если после замены часть блоков на страницах вообще пропала, а не просто ссылается на старый адрес — вероятно, замена всё же прошла не через search-replace, а обычным SQL-запросом и повредила сериализацию; восстановите базу из бэкапа и повторите шаг с WP-CLI.
Настройка редиректов со старого домена
Даже после полной замены адреса в базе старый домен нужно на время оставить в DNS и настроить на нём редирект 301 на новый адрес — это сохраняет позиции в поиске и не теряет переходы по старым ссылкам из внешних источников. Правило добавляется в .htaccess старого сайта:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^old-domain\.com$ [NC]
RewriteRule ^(.*)$ https://new-domain.com/$1 [R=301,L]
Держите редирект активным минимум 3-6 месяцев, пока поисковые системы не переиндексируют ссылки на новый домен.
Чек-лист смены домена WordPress
- Сделан полный бэкап файлов и базы данных перед началом работ.
- Замена URL выполнена командой
wp search-replace, а не прямым SQL-запросом. - Проверены изображения, конструкторы страниц, меню и виджеты.
- Постоянные ссылки пересохранены в настройках WordPress.
- На старом домене настроен редирект 301 на новый адрес.