# Смена домена WordPress: замена URL в базе данных

> Смена домена WordPress без поломок: правильный порядок замены URL в базе данных, сериализованные данные и настройка редиректов.

Простая замена адреса в настройках WordPress не переносит сайт на новый домен: старый URL остаётся в тысячах записей базы данных, включая сериализованные массивы настроек конструкторов страниц. Разбираем правильный порядок смены домена без поломки вёрстки.

## Почему нельзя просто поменять адрес в настройках

Адрес сайта хранится не только в двух полях `siteurl` и `home` таблицы `wp_options`. Ссылки на старый домен разбросаны по содержимому записей, метаполям, настройкам меню и виджетов, а часть плагинов и конструкторов страниц вроде Elementor хранит настройки в виде сериализованных PHP-массивов. Если заменить в них домен обычным поиском-заменой в тексте, длина строки в сериализованных данных не совпадёт с реальной, и PHP не сможет разобрать массив — блоки на странице перестанут отображаться.

## Подготовка: бэкап и вычисление объёма правок

Перед любыми правками базы данных сделайте полный бэкап файлов и базы — порядок описан в статье [WordPress бэкап: UpdraftPlus и ручной метод](https://www.zevshost.net/ru/kb/wordpress-backup-nastroika/). Затем посчитайте, сколько записей содержит старый адрес:

```
# Посчитать число упоминаний старого домена в базе данных
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: поиск-замена в БД и создание админа](https://www.zevshost.net/ru/kb/wp-cli-komandi/).

## Что проверить после замены домена

После выполнения `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 на новый адрес.

---

Источник: https://www.zevshost.net/ru/kb/wordpress-smena-domena-url/
