Перенос WordPress на новый домен без потерь
Перенос WordPress на новый домен звучит пугающе, но при правильной последовательности шагов проходит без потери данных и SEO. Прохожусь по всему процессу: подготовка, перенос файлов и базы, замена URL, настройка HTTPS и типичные проблемы после переезда.
Подготовка
Сделать полный бэкап
- База данных — экспорт через phpMyAdmin или
mysqldump - Файлы сайта — скачать через FTP, SCP или файловый менеджер хостинга
Проверить настройки хостинга
- Новый домен уже подключён к серверу
- Есть SSH или FTP доступ к старому и новому серверу
Без бэкапа не начинаю — если что-то пойдёт не так на середине переноса, откатиться без него невозможно.
Перенос файлов
Копирую файлы сайта напрямую между серверами:
scp -r /var/www/old_site_directory user@new_server_ip:/var/www/new_site_directory
Выставляю правильные права:
sudo chown -R www-data:www-data /var/www/new_site_directory/
Перенос базы данных
Экспортирую базу со старого сервера и копирую на новый:
mysqldump -u username -p db_name > db_name.sql
scp db_name.sql user@new_server_ip:/path/to/directory
Создаю базу и пользователя на новом сервере, импортирую дамп:
mysql -u root -p
CREATE DATABASE db_name;
CREATE USER 'new_user'@'localhost' IDENTIFIED BY 'your-strong-password';
GRANT ALL PRIVILEGES ON db_name.* TO 'new_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
mysql -u new_user -p db_name < db_name.sql
Замена URL в базе данных
При смене домена нужно заменить все упоминания старого адреса в базе. Три варианта.
Search Replace DB (рекомендую)
- Скачать Search Replace DB
- Загрузить и распаковать в корень сайта
- Открыть в браузере:
http://new_domain/Search-Replace-DB-master - Ввести данные подключения к базе и заменить
old_domain.comнаnew_domain.com
Через командную строку
php srdb.cli.php -h localhost -n db_name -u db_user -p "db_pass" -s "old_domain.com" -r "new_domain.com"
Вручную
- Экспортировать базу
- Открыть SQL-файл в текстовом редакторе
- Заменить через Find & Replace (Ctrl+H) старые URL на новые
- Импортировать обновлённый файл обратно
Ручной способ оставляю на крайний случай — для больших баз он медленный и легко что-то пропустить.
Настройка WordPress после переноса
wp-config.php— проверить, что нет захардкоженных URL.htaccess— обновить редиректы, если были- Permalinks — зайти в Settings → Permalinks и нажать Save Changes, чтобы обновились правила перезаписи
HTTPS на новом домене
Получаю бесплатный сертификат через Certbot:
sudo snap install --classic certbot
sudo ln -s /snap/bin/certbot /usr/bin/certbot
sudo certbot --nginx -d new_domain -d www.new_domain
Автоматическое продление:
crontab -e
0 0 15 * * sudo certbot renew --quiet
Типичные проблемы после переноса
Mixed Content предупреждения — браузер видит часть ресурсов по http вместо https. Добавляю в wp-config.php:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS'] = 'on';
Битые ссылки и пропавшие изображения — запускаю ещё один search-replace для старых URL в постах и медиа.
SEO-редиректы — настраиваю 301-редирект со старого домена на новый через .htaccess или плагин. Без этого теряешь позиции в поиске и входящий трафик по старым ссылкам.
Финальный чеклист
- [ ] Бэкап создан и сохранён в надёжном месте
- [ ] Файлы и база перенесены
- [ ] URL в базе обновлены
- [ ] HTTPS настроен
- [ ] Внутренние ссылки и изображения проверены
- [ ] 301-редиректы для SEO настроены
Перед тем как переключать домен на боевую среду — проверяю сайт на staging-окружении. Это сводит простой к минимуму и убирает сюрпризы после переключения.
Если хочешь обсудить похожую задачу — пиши на [email protected] или заходи на 1it.pro.