Переезд сайта с одного хостинга на другой — это как перевозка хрупкого антиквариата: требует тщательной упаковки, аккуратной транспортировки и внимательной распаковки. Если вы задумались о том, как перенести сайт на WordPress, но опасаетесь технических сложностей, этот гайд станет вашим подробным путеводителем. Мы разберём не только базовые шаги, но и скрытые нюансы, которые часто упускают из виду даже опытные пользователи. Вы узнаете, как сделать перенос сайта на VPS, обычный хостинг или даже локальный сервер, как избежать «битых» ссылок и потери данных, а также когда стоит доверить услуги переноса сайта профессионалам. Готовы? Начнём наше цифровое путешествие.
Подготовка к переезду: создание идеальной резервной копии
Перед тем как начать перенос сайта на другой хостинг, представьте, что ваш сайт — это виртуальный организм, состоящий из тысяч файлов и записей в базе данных. Первый шаг — создать его «цифровой двойник». Для этого есть три основных метода:
Ручной экспорт через FTP и phpMyAdmin
- Подключитесь к текущему хостингу через FTP-клиент (FileZilla, WinSCP). Скопируйте все файлы, включая скрытые (включите опцию «Показывать скрытые файлы»). Особое внимание уделите папке wp-content — здесь хранятся темы, плагины и загруженные изображения.
- Для базы данных зайдите в phpMyAdmin через панель управления хостингом. Выберите базу, связанную с вашим сайтом, нажмите «Экспорт» → «Custom», убедитесь, что выбраны все таблицы, а формат установлен SQL. Уберите галочку с «Добавить DROP TABLE» — это предотвратит случайное удаление данных на новом сервере.
Использование плагинов-помощников
- Плагины вроде Duplicator, All-in-One WP Migration или UpdraftPlus автоматизируют процесс. Например, Duplicator создаёт два файла: архив с файлами и «установщик». После загрузки их на новый хостинг запустите установщик через браузер, и плагин сам настроит базу данных. Это идеальный вариант, если нужен перенос сайта без погружения в технические детали.
Резервное копирование через хостинг-панель
- Многие провайдеры (например, Beget, TimeWeb) предлагают встроенные инструменты для бэкапа. В cPanel это раздел «Backup» → «Full Backup». Однако учтите: такие копии могут не работать на другом хостинге из-за различий в настройках сервера.
Перед началом переноса сайта на WordPress отключите плагины кэширования (W3 Total Cache, WP Rocket) — они могут повредить файлы при архивации.
Выбор нового «дома»: хостинг, VPS или облако?
Перед тем как перенести сайт на Вордпресс, решите, куда именно вы его перемещаете. Варианты:
- Общий хостинг — подходит для небольших сайтов с трафиком до 10 000 посетителей в месяц. Плюсы: низкая цена, простота настройки. Минусы: ограниченные ресурсы, соседство с другими сайтами (риск замедления).
- VPS (виртуальный приватный сервер) — идеален для средних и крупных проектов. Здесь вы получаете root-доступ, выделенные ресурсы и возможность тонкой настройки. Перенос сайта на VPS требует базовых навыков работы с командной строкой (SSH), но даёт полный контроль.
- Облачные решения (AWS, Google Cloud) — мастхэв для высоконагруженных порталов. Гибкая тарификация, масштабируемость, но сложность настройки для новичков.
🛠 Настройка нового сервера:
- Для общего хостинга достаточно создать аккаунт и базу данных через панель управления (например, в cPanel: «MySQL Databases» → укажите имя БД, пользователя и пароль).
- Для переноса сайта на VPS установите LAMP/LEMP-стек (Linux, Apache/Nginx, MySQL, PHP). Используйте скрипты вроде CentOS Web Panel или воспользуйтесь готовыми образами от DigitalOcean.
Транспортировка файлов и базы данных
Теперь, когда резервная копия готова, а новый хостинг подготовлен, начинается ключевой этап — как перенести сайт.
Загрузка файлов через FTP
- На новом хостинге создайте папку (например, public_html) и загрузите туда все файлы из бэкапа. Убедитесь, что структура папок совпадает со старой.
- Проверьте права доступа: папки — 755, файлы — 644. Для файла wp-config.php установите права 600 (только владелец может читать и редактировать).
Импорт базы данных
- В phpMyAdmin нового хостинга создайте пустую БД с тем же именем, что и на старом сервере (если меняете имя — позже внесите его в wp-config.php).
- Перейдите во вкладку «Импорт», выберите SQL-файл. Важно: установите кодировку utf8mb4_unicode_ci, чтобы избежать проблем с кириллицей.
Если файл слишком большой (более 50 МБ), используйте консоль:
mysql -u имя_пользователя -p имя_базы < backup.sql
- Настройка wp-config.php
Откройте этот файл в корневой папке WordPress и проверьте строки:
define('DB_NAME', 'новая_база');
define('DB_USER', 'новый_пользователь');
define('DB_PASSWORD', 'пароль');
define('DB_HOST', 'localhost'); // Или другой хост, указанный хостингом
Если вы переносите сайт на другой хостинг с изменением домена, добавьте строки:
define('WP_HOME', 'https://новый-домен.ru');
define('WP_SITEURL', 'https://новый-домен.ru');
Волшебство DNS: как не потерять посетителей при смене домена
Если домен остаётся прежним, обновите DNS-записи у регистратора. NS-серверы нужно заменить на те, что предоставил новый хостинг (например, ns1.newhosting.com). Учтите: распространение изменений по всему миру (propagation) занимает от 2 до 48 часов.
🌐 Временный доступ:
- Чтобы начать работу до завершения propagation, добавьте запись в файл hosts на своём ПК:
- 168.1.1 ваш-домен.ru
(Замените 192.168.1.1 на IP-адрес нового сервера).
Пост-переездная проверка: от поиска ошибок до SEO-оптимизации
После переноса сайта на WordPress не спешите удалять старую версию. Проведите детальное тестирование:
Поиск битых ссылок
- Используйте плагин Broken Link Checker или онлайн-сервис Dead Link Checker.
- Проверьте внутренние ссылки, изображения, CSS и JS-файлы.
Обновление URL
Если домен изменился, замените старые ссылки в базе данных:
В phpMyAdmin выполните SQL-запросы:
UPDATE wp_options SET option_value = replace(option_value, 'старый-домен.ru', 'новый-домен.ru');
UPDATE wp_posts SET post_content = replace(post_content, 'старый-домен.ru', 'новый-домен.ru');
Или используйте плагин Better Search Replace — он безопаснее для новичков.
Настройка редиректов
Добавьте в файл .htaccess правила для 301-редиректа:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^старый-домен.ru$ [NC]
RewriteRule ^(.*)$ https://новый-домен.ru/$1 [R=301,L]
Проверка SSL
Установите сертификат (бесплатный Let’s Encrypt через панель хостинга) и настройте принудительное HTTPS:
В wp-config.php
define('FORCE_SSL_ADMIN', true);
Когда стоит заказать услуги переноса сайта?
Самостоятельный перенос сайта на WordPress возможен, но в ряде случаев лучше довериться профессионалам:
- Сайт содержит кастомные плагины или сложную архитектуру.
- Вы переезжаете с другой CMS (Joomla, OpenCart) на WordPress.
- Нет времени разбираться с техническими нюансами.
Средняя стоимость услуг переноса сайта в России — от 5 000 до 20 000 ₽. В услугу обычно входит:
- Полный бэкап и проверка на вирусы.
- Оптимизация скорости работы на новом хостинге.
- Гарантия бесперебойной работы после миграции.
Но есть компании, которые могут перенести сайт бесплатно и без заморочек
Даже если кажется, что перенос сайта на другой хостинг прошёл успешно, остаются скрытые риски:
- Кэш браузера и плагинов — очистите его через админ-панель WordPress и в браузере (Ctrl + F5).
- Обновление DNS-кэша — используйте команду ipconfig /flushdns (Windows) или sudo systemd-resolve --flush-caches (Linux).
- Мониторинг ошибок 500 — проверьте файл error_log в корневой папке. Частые причины: неправильные права доступа или устаревшая версия PHP.
Помните: WordPress — гибкая система, но её стабильность зависит от аккуратности в деталях. Следуя этому руководству, вы не просто перенесёте сайт, но и заложите фундамент для его роста на новом хостинге. И даже если что-то пойдёт не так — у вас есть резервные копии, а это главный «страховой полис» в мире веб-разработки.
В качестве бонуса: Личный опыт: Как я переносил сайт с Fozzy на Beget
Мой сайт на WordPress уже несколько лет жил на Fozzy (недорогой shared-хостинг), но из-за участившихся простоев и медленной загрузки я решил переехать на Beget. Ожидал, что это займет пару часов, но в итоге процесс растянулся на два дня из-за множества подводных камней.
Вот максимально подробный разбор моего переезда, включая все ошибки и их решения.
🔹 Подготовка к переезду: Резервное копирование (Fozzy → Локальный ПК)
Перед тем как перенести сайт на другой хостинг, нужно сделать полную резервную копию.
🔸 Копируем файлы через FTP
- Подключаюсь к Fozzy через FileZilla (логин и пароль от FTP есть в панели управления).
- Захожу в папку public_html (или www, если сайт в корне).
- Выделяю все файлы (включая скрытые, например .htaccess).
Ошибка №1: При скачивании больших папок (например, wp-content/uploads) FileZilla зависает.
Решение: Скачиваю архив через панель управления Fozzy (Backups → Создать резервную копию).
🔸 Экспортируем базу данных
- Захожу в phpMyAdmin (в панели Fozzy: "Базы данных" → "Управление").
- Выбираю базу данных своего сайта (обычно начинается с u123_).
- Жму «Экспорт» → «Быстрый» → «SQL» → «Скачать».
Ошибка №2: База большая (более 50 МБ), phpMyAdmin не справляется.
Решение: Использую плагин WP-DB-Backup или командную строку (если есть доступ к SSH).
🔹 Настройка нового хостинга (Beget)
🔸 Создаю аккаунт и базу данных
Регистрируюсь на Beget, захожу в панель.
Создаю новую базу данных (MySQL):
Имя БД: beget_db
Пользователь: beget_db
Пароль: сложный! (лучше сгенерировать)
Ошибка №3: Beget автоматически добавляет префикс beget_ к именам БД.
Решение: Придётся изменить wp-config.php (об этом ниже).
🔸Загружаю файлы на Beget
Подключаюсь к Beget через FTP (данные есть в панели).
Загружаю все файлы в папку public_html.
Ошибка №4: Права доступа (chmod) сбились.
Решение: Вручную выставляю:Папки: 755
Файлы: 644
wp-config.php: 600 (защита от чтения)
🔹 Перенос базы данных и настройка сайта
🔸 Импортируем базу в Beget
Захожу в phpMyAdmin Beget (в панели: "Базы данных" → "Управление").
Выбираю свою БД (beget_db), жму «Импорт» → «Выбрать файл» (мой .sql).
Ошибка №5: Ошибка #1064 - SQL-синтаксис.
Причина: В файле есть команды, которые не поддерживает Beget (например, CREATE USER).
Решение: Открываю .sql в Notepad++, удаляю лишние строки (всё до первого INSERT).
🔸 Настраиваю wp-config.php
- Открываю файл wp-config.php на Beget.
- Меняю данные подключения к БД:
define('DB_NAME', 'beget_db');
define('DB_USER', 'beget_user');
define('DB_PASSWORD', 'мой_новый_пароль');
define('DB_HOST', 'localhost');
Ошибка №6: Сайт выдаёт ошибку Error establishing a database connection.
Причина: Beget использует локальный сокет вместо localhost.
Решение: Меняю 'localhost' на:define('DB_HOST', ':/tmp/mysql.sock');
🔹 Перенастройка домена и SSL
🔸 Меняю DNS-серверы
Иду в панель регистратора домена (например, Reg.ru).
Меняю NS-серверы на Beget:
ns1.beget.com
ns2.beget.com
Ошибка №7: DNS обновляются до 24 часов, сайт временно недоступен.
Решение: Пользуемся временным URL от Beget (вида beget.tech/~sitename).
🔸 Настраиваю HTTPS (SSL)
В панели Beget иду в «Сайты» → «SSL».
Выбираю «Бесплатный SSL от Let’s Encrypt» → активирую.
Ошибка №8: После переезда часть CSS/JS не грузится.
Причина: В базе остались ссылки на http://.
Решение: Делаю замену в БД через phpMyAdmin:
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://', 'https://');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://', 'https://');
🔹 Финальная проверка и оптимизация
🔸 Проверяю работоспособность
- Формы (контакты, заказы) — работают?
- Изображения — не битые?
- Редиректы — старые URL ведут на новые?
🔸 Чистка кэша
- Очищаю кэш WordPress (WP Super Cache).
- Обновляю постоянные ссылки (Настройки → Постоянные ссылки → Сохранить).
🔸 Удаляю старые данные с Fozzy
Только после 100% проверки! Удаляю файлы и БД, чтобы не платить за старый хостинг.
🔹 Что я понял после переезда
✅ Резервные копии — святое (лучше 2 копии: локальная + облако).
✅ Beget строже к настройкам MySQL, чем Fozzy.
✅ DNS-кэш — главный враг быстрого переезда.
✅ Лучше делать переезд ночью, когда трафик минимален.
Теперь мой сайт грузится в 2 раза быстрее, а поддержка Beget отвечает за 5 минут. Если бы я знал все эти нюансы заранее, переезд занял бы не 2 дня, а 3 часа.
Если не уверены в своих силах — закажите услуги переноса сайта у специалистов совершенно бесплатно.
И еще, для тех, кто дочитал: Как я перенёс сайт на WordPress с Shared-хостинга на VPS
Мой сайт на WordPress о путешествиях жил на дешёвом shared-хостинге 3 года, когда трафик перевалил за 15 000 посетителей в месяц, страницы стали грузиться по 8–10 секунд, а в чате поддержки посоветовали «перейти на VPS». Я решился на перенос сайта на VPS самостоятельно, хотя до этого никогда не работал с серверами. Вот как это было, включая все грабли, на которые я наступил.
День 1: Подготовка — «Спасибо, что не удалил старый хостинг»
Перед тем как перенести сайт на WordPress, я прочёл десяток гайдов и решил использовать плагин Duplicator — хвалебные отзывы обещали «миграцию в 3 клика». Установил его, запустил создание пакета... и получил ошибку: «Недостаточно памяти». Оказалось, мой тарифный план хостинга ограничивал оперативку до 256 МБ, а для работы Duplicator нужно 512 МБ.
Решение:
Вручную увеличил memory_limit в файле wp-config.php, добавив строку:
define('WP_MEMORY_LIMIT', '512M');
Перезагрузил сайт — плагин заработал. Создал архив (1.2 ГБ) и installer.php. Скачал оба файла на компьютер.
Совет: Перед выгрузкой архива проверьте, нет ли в нём «мусора» — старых резервных копий, неиспользуемых плагинов. Я сэкономил 300 МБ, удалив ненужные файлы через FTP.
День 2: Выбор VPS — «Почему все говорят про Nginx и Apache?»
Купил VPS на Ubuntu 22.04 с 2 ГБ RAM и SSD 30 ГБ за $10/мес. Панель управления не взял — решил сэкономить. По гайду установил LAMP (Linux + Apache + MySQL + PHP), но забыл про PHP-расширения для WordPress.
Ошибка: После переноса файлов через FileZilla и импорта базы данных сайт выдавал «Ошибку установления соединения с базой данных».
Причина: В wp-config.php были указаны правильные логин и пароль, но на сервере не стоял модуль php-mysql.
Решение:
Подключился к серверу по SSH:
ssh root@мой-vps-ip
Установил недостающие компоненты:
sudo apt install php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc php-soap php-intl php-zip
Перезапустил Apache:
sudo systemctl restart apache2
Важно: Для WordPress 6.0+ требуется PHP 7.4 или выше. Проверить версию можно командой:
php -v
День 3: Перенос файлов — «Где мои фотографии из Бали?»
Через FileZilla загрузил архив Duplicator в папку /var/www/html. Запустил installer.php, указал данные новой базы данных... и увидел сообщение: «Не удаётся распаковать архив».
Причина: На VPS стоял PHP 8.1, а Duplicator не поддерживал новую версию.
Решение:
- Перешёл на ручной метод. Распаковал архив сайта локально (использовал 7-Zip).
- Загрузил файлы через FTP в /var/www/html, сохранив структуру папок.
- Вручную создал базу данных:
mysql -u root -p
CREATE DATABASE new_wp_db;
CREATE USER 'new_wp_user'@'localhost' IDENTIFIED BY 'сильный_пароль';
GRANT ALL PRIVILEGES ON new_wp_db.* TO 'new_wp_user'@'localhost';
FLUSH PRIVILEGES;
- Импортировал дамп базы:
mysql -u new_wp_user -p new_wp_db < backup.sql
Фейл: После запуска сайта половина изображений не отображалась. Оказалось, файлы из папки uploads имели права доступа 700, а веб-серверу нужно 755.
Исправление:
sudo chmod -R 755 /var/www/html/wp-content/uploads
День 4: DNS и HTTPS — «Почему сайт открывается только у меня?»
Перенастроил DNS домена на новые NS-серверы VPS. Через 2 часа сайт стал доступен... но только у меня. Друзья жаловались на «Сайт не найден».
Причина: DNS-кэш у провайдеров обновляется до 72 часов.
Временное решение:
Добавил в файл hosts на своём ПК (Windows):
123.123.123.123 мой-сайт.ru
Где 123.123.123.123 — IP моего VPS.
Настроил Apache на использование домена:
sudo nano /etc/apache2/sites-available/moy-sait.conf
Прописал:
<VirtualHost *:80>
ServerName мой-сайт.ru
DocumentRoot /var/www/html
<Directory /var/www/html>
AllowOverride All
</Directory>
</VirtualHost>
Включил конфиг и SSL через Certbot:
sudo certbot --apache -d мой-сайт.ru
Ошибка: После включения HTTPS часть CSS «сломалась».
Причина: В базе данных остались ссылки на http://.
Исправление через phpMyAdmin:
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://', 'https://');
UPDATE wp_options SET option_value = 'https://мой-сайт.ru' WHERE option_name = 'home' OR option_name = 'siteurl';
День 5: Тестирование — «Почему кнопка «Купить тур» ведёт в никуда?»
После переноса сайта на другой хостинг я обнаружил:
- Форма бронирования туров (плагин WooCommerce Bookings) не отправляла данные.
- Кэш Cloudflare показывал устаревшую версию сайта.
Решение:
Очистил кэш Cloudflare в личном кабинете.
Пересоздал постоянные ссылки: В админке WordPress → «Настройки» → «Постоянные ссылки» → кликнул «Сохранить» без изменений.
Обновил .htaccess, добавив правила для WP Rocket:
# BEGIN WP Rocket
RewriteEngine On
RewriteBase /
# Кэширование изображений
<FilesMatch ".(jpg|jpeg|png|gif|webp)$">
Header set Cache-Control "max-age=31536000, public"
</FilesMatch>
# END WP Rocket
Важно: После миграции отключите все кэш-плагины и включайте их по одному, проверяя работу сайта.
Итоги и уроки за 2500 рублей
На перенос сайта на WordPress ушло 5 дней (из них 2 — на исправление ошибок). Что я понял:
- Не доверяйте «волшебным» плагинам. Duplicator спасёт, только если версии PHP на старом и новом хостинге совпадают.
- Права доступа — боль новичка. Команда chmod -R 755 стала моей мантрой.
- VPS без панели — не для новичков. Через месяц я поставил ISPManager за 300 руб./мес. — это сэкономило кучу времени.
Если бы я знал эти нюансы раньше, перенос сайта занял бы 1 день. Но теперь мой сайт грузится за 1.3 секунды, а я чувствую себя повелителем серверов. И да — через неделю я всё же удалил файлы со старого хостинга. Но перед этим сделал ещё один бэкап.