Переезд WordPress на новый домен в официальном руководстве WordPress расписан как цепочка: бэкап файлов и базы, смена адресов, перенос на новый сервер, правка wp-config.php и импорт базы. Ошибка на любом шаге даёт белый экран, битые ссылки или смесь старого и нового домена в базе. Ниже рабочий порядок без магии «одной кнопки».
Бэкап файлов и базы до любых правок
Подключитесь к текущему хостингу по SFTP (доступы есть в панели провайдера) и скачайте весь корень сайта: wp-admin, wp-content, wp-includes, wp-config.php, index.php, .htaccess и прочие файлы. На VPS проще собрать архив по SSH, главное не забыть wp-content/uploads и свои конфиги:
tar czf site-backup.tar.gz -C /var/www site
Имя базы, пользователь и хост лежат в wp-config.php (DB_NAME, DB_USER, DB_HOST). Дамп снимается через phpMyAdmin (экспорт в SQL, все таблицы, с DROP TABLE для повторного импорта) или из консоли. Без свежего дампа дальше не идите.
mysqldump -u DB_USER -p DB_NAME > site.sql # или, если есть WP-CLI wp db export site.sql
Новый хостинг: база, файлы и wp-config.php
На новом хостинге создайте базу MySQL или MariaDB и пользователя с полными правами на неё. Запишите имя базы, логин, пароль и хост: чаще всего это localhost, но у некоторых хостеров отдельный сервер баз.
- Залейте файлы старого сайта в корень нового по SFTP или rsync. Ставить поверх чистый WordPress не нужно.
- Импортируйте дамп в новую базу через phpMyAdmin или
mysql -u USER -p DB_NAME < site.sql. - Права обычно такие: файлы 644, папки 755, владелец тот пользователь, от которого работает PHP. Точные цифры зависят от хостинга.
Затем пропишите данные новой базы в wp-config.php:
define( 'DB_NAME', 'new_db' ); define( 'DB_USER', 'new_user' ); define( 'DB_PASSWORD', 'new_password' ); define( 'DB_HOST', 'localhost' ); // уточните у хостера
Ключи и соли (AUTH_KEY и остальные) можно оставить старыми. Если их поменять, всех пользователей просто разлогинит.
Замена старого адреса в базе без поломки сериализации
Старый домен лежит в настройках, записях, виджетах и сериализованных массивах плагинов. Как предупреждает руководство WordPress, простая замена строк в SQL ломает такие данные: в них записана длина строки, и после смены домена она перестаёт совпадать. Поэтому замену делают инструментами, которые понимают сериализацию: wp search-replace в WP-CLI или плагином Better Search Replace.
wp search-replace 'https://old.example' 'https://new.example' --all-tables --skip-columns=guid --dry-run wp search-replace 'https://old.example' 'https://new.example' --all-tables --skip-columns=guid
--dry-run и посмотреть, сколько замен будет. Источник: developer.wordpress.org, wp search-replace.Сначала прогон с --dry-run, потом боевой, и перед ним ещё один дамп. Колонку guid в wp_posts не трогают: по ней RSS-читалки узнают записи, и после смены GUID старые посты всплывут у подписчиков как новые.
Если WP-CLI нет, подойдёт Better Search Replace: у плагина больше миллиона активных установок, свежая версия 1.4.11, совместимость проверена с WordPress 7.1.3. Галочку замены GUID в нём оставьте выключенной.
Пока DNS ещё смотрит на старый сервер, новый можно открыть через файл hosts на своём компьютере: прописать в нём новый IP для домена и спокойно проверить сайт и админку.
Постоянные ссылки, проверка и DNS
- В админке откройте «Настройки» → «Постоянные ссылки» и нажмите «Сохранить», ничего не меняя. WordPress перепишет правила rewrite. На Apache проверьте
.htaccess, на Nginx правила живут в конфиге сервера. - Пройдите по главной, ключевым страницам, формам, корзине и личному кабинету, если они есть. В исходном коде страниц не должно остаться старого домена в CSS, JS и картинках.
- Сбросьте кэш плагинов и CDN, проверьте вход в
/wp-adminи SSL-сертификат для нового домена. - За день-два до переезда понизьте TTL записей, а потом поменяйте A/AAAA (или NS) на новый хостинг. Пока старые записи живут в кэше резолверов, часть посетителей ещё будет попадать на старый сервер.
Редирект 301 и переезд в Яндекс Вебмастере и Search Console
Если меняется именно домен, а не только хостинг, на старом сервере нужен постоянный редирект 301 с каждой страницы на такую же страницу нового домена. Так сохранятся позиции в поиске и чужие ссылки. Пример для Apache в .htaccess:
RewriteEngine On RewriteRule ^(.*)$ https://new.example/$1 [R=301,L]
То же на Nginx:
server {
listen 80;
server_name old.example www.old.example;
return 301 https://new.example$request_uri;
}
Для российского сайта главное переезд в Яндекс Вебмастере: добавьте и подтвердите оба сайта, проверьте, что robots.txt у них совпадает, настройте редирект со страниц старого сайта на такие же страницы нового и укажите новый адрес в разделе «Индексирование» → «Переезд сайта». По словам Яндекса, смена главного адреса занимает несколько недель, и сохранение позиций и трафика он не гарантирует. Сводить все старые страницы на главную нового сайта Яндекс не советует.
В Google Search Console для этого есть инструмент «Изменение адреса». Он работает, только если вы владелец обоих сайтов в одном аккаунте Google и на старом сайте уже стоят редиректы 301. Google советует держать редиректы минимум 180 дней, а старый домен продлевать ещё хотя бы год, чтобы его не перехватили.
После переезда обновите адрес в Метрике и других счётчиках, в sitemap, CDN, платёжных системах, OAuth-приложениях, вебхуках и почтовых записях SPF и DKIM, если они завязаны на домен.
Если не хочется возиться самому, перенос входит в доработки существующего сайта, по моему прайс-листу это от 5 000 ₽.
В итоге переезд на новый домен это бэкап, перенос файлов и базы, аккуратная замена адресов с учётом сериализации и без GUID, редиректы 301 и заявка на переезд в Вебмастере и Search Console. Делайте его в спокойное время и проверяйте реальные сценарии, а не только то, что открылась главная.
Источники и ссылки
--dry-run.
Better Search Replace
Плагин для замены адресов из админки, больше миллиона установок.
Яндекс Вебмастер: переезд на новый домен
Редиректы, robots.txt и инструмент «Переезд сайта».
Search Console: инструмент «Изменение адреса»
Перенос сайта на новый домен в Google, редиректы минимум на 180 дней.