До основного вмісту

Зміна домену WordPress: заміна URL у базі даних

WordPress · 29.09.2026

Проста заміна адреси в налаштуваннях 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 на нову адресу.
← Назад до бази знань Поставити питання підтримці