Перенос сайта на другой хостинг: чек-лист без простоя
Перенос на другой хостинг — операция, при которой позиции в поиске не должны пострадать вообще. Адреса страниц не меняются, контент тот же, меняется только сервер. Проблемы возникают из-за мелочей: забытой почты, cron, сертификата, кодировки базы. Ниже — чек-лист, по которому я переношу сайты.
До начала: инвентаризация
Выпишите, что работает на старом хостинге помимо самого сайта:
- почта на домене — где она: у хостинга, в Яндекс 360, в Google;
- cron-задачи — обмен с 1С, рассылки, очистка кэша, бэкапы;
- поддомены — тестовые версии, CRM, отдельные лендинги;
- версия PHP и расширения (ionCube, imagick, intl, soap);
- размер файлов и базы;
- SSL-сертификат — бесплатный Let’s Encrypt или купленный;
- внешние интеграции, привязанные к IP сервера: платёжные системы, API служб доставки, 1С.
Последний пункт часто забывают: если платёжная система принимает уведомления только с определённого IP или сайт обращается к API с белым списком адресов, после переноса оплата перестанет подтверждаться.
Шаг 1. Подготовьте новый хостинг
- Создайте сайт и базу данных.
- Установите ту же версию PHP, что на старом хостинге. Обновление PHP — отдельная задача, не смешивайте её с переносом.
- Включите нужные расширения.
- Проверьте лимиты: memory_limit, max_execution_time, upload_max_filesize.
Шаг 2. Скопируйте файлы
Через SSH это быстро и надёжно:
tar czf site.tgz --exclude=wp-content/cache --exclude=bitrix/cache -C /var/www example.by
Переносите архив на новый сервер (scp, rsync или через панель) и распаковывайте. Без SSH — через FTP, но долго и с риском пропустить файлы. Кэш переносить не нужно.
Можно и напрямую между серверами:
rsync -avz --exclude 'wp-content/cache' user@old-server:/var/www/example.by/ /var/www/example.by/
Шаг 3. Перенесите базу
mysqldump -u user -p --single-transaction --default-character-set=utf8mb4 dbname > dump.sql
mysql -u newuser -p newdb < dump.sql
Обратите внимание на кодировку. Старые сайты на Битриксе и Joomla бывают в windows-1251 — переносите в той же кодировке, иначе вместо текста будут знаки вопроса.
Для больших баз используйте сжатие: mysqldump … | gzip > dump.sql.gz.
Шаг 4. Поправьте конфигурацию
Пропишите новые доступы к базе:
- WordPress — wp-config.php: DB_NAME, DB_USER, DB_PASSWORD, DB_HOST;
- OpenCart — config.php и admin/config.php: DB_* и пути DIR_* (абсолютные пути к папкам на новом сервере);
- 1С-Битрикс — /bitrix/.settings.php и /bitrix/php_interface/dbconn.php;
- Joomla — configuration.php: доступы к базе и пути к папкам tmp и logs.
Пути в OpenCart и Joomla — частая причина ошибок после переноса: сайт открывается, но не загружаются изображения или не работает админка.
Шаг 5. Проверьте сайт до смены DNS
Главный приём, который исключает простой. На своём компьютере добавьте в файл hosts строку с IP нового сервера:
203.0.113.10 example.by www.example.by
Файл hosts: в Windows — C:\Windows\System32\drivers\etc\hosts, в macOS и Linux — /etc/hosts. Теперь ваш браузер открывает сайт с нового сервера, а все остальные — со старого.
Проверьте:
- главную и несколько внутренних страниц;
- админку;
- формы — отправьте тестовую заявку;
- корзину и оформление заказа;
- поиск по сайту;
- загрузку изображений в админке.
SSL на этом этапе можно проверить, только если сертификат уже выпущен на новом сервере. Let’s Encrypt обычно выпускается после смены DNS — заранее можно перенести сертификат со старого сервера или использовать проверку через DNS.
Шаг 6. Почта
Если почта на домене обслуживается старым хостингом, решите заранее, где она будет. Варианты:
- перенести ящики на новый хостинг вместе с письмами (IMAP-синхронизация);
- перейти на Яндекс 360 или Google Workspace.
При смене DNS проверьте MX-записи и SPF — они должны указывать на тот сервер, где почта будет жить. Если сайт отправляет письма через SMTP, проверьте эти настройки на новом сервере. Подробнее — в статье «Не приходят заявки с сайта».
Шаг 7. Смена DNS
Есть два способа:
- сменить A-запись домена на IP нового сервера — если DNS управляется у регистратора или в отдельном сервисе;
- сменить NS-серверы на серверы нового хостинга — тогда все записи (MX, TXT, поддомены) нужно заранее создать на новом хостинге.
За сутки до переноса уменьшите TTL записей до 300 секунд — тогда переключение пройдёт за минуты, а не за сутки.
Пока DNS обновляется, часть посетителей попадает на старый сервер, часть — на новый. Поэтому на время переключения не вносите изменений на сайте и, если это магазин, следите за заказами на обоих серверах.
Шаг 8. После переключения
- Выпустите SSL-сертификат на новом сервере, если ещё не сделали.
- Настройте cron-задачи.
- Проверьте обмен с 1С, платёжные уведомления, API доставки.
- Проверьте, что редиректы с http на https и с www на без www (или наоборот) работают как раньше.
- Посмотрите в Яндекс Вебмастере, нет ли всплеска ошибок.
- Настройте резервное копирование на новом хостинге.
- Через неделю, убедившись, что всё работает, отключите старый хостинг. Не раньше.
Перенос с сменой домена
Это другая операция. Нужны постраничные 301-редиректы со старого домена на новый, указание переезда в Яндекс Вебмастере и в Search Console, и старый домен должен продлеваться минимум год. Позиции временно просядут даже при правильном переезде.
Хостинг в Беларуси
Для белорусских компаний есть требования к размещению сайтов, и они периодически обновляются. Уточните актуальные требования у своего юриста или бухгалтера до выбора хостинга.
Частые ошибки
- Перенесли сайт, но не почту — неделя без писем.
- Не уменьшили TTL — переключение растянулось на сутки.
- Перенесли базу в другой кодировке — знаки вопроса вместо текста.
- Обновили PHP одновременно с переносом — непонятно, что именно сломалось.
- Сразу отключили старый хостинг — нечего восстанавливать, если что-то забыли.
Если сайт большой, с обменом с 1С или вы не хотите рисковать — перенос входит в мои услуги: перенос сайта без простоя, с проверкой всех интеграций.
Особенности по CMS
WordPress
- Если меняется адрес (поддомен для теста, другой домен), используйте wp search-replace, а не замену в SQL-дампе текстом: в базе WordPress много сериализованных данных, и простая замена ломает их длину.
wp search-replace 'https://old.example.by' 'https://example.by' --skip-columns=guid --dry-run
Сначала с —dry-run, чтобы увидеть количество замен, затем без него.
- Проверьте постоянные ссылки: после переноса на сервер с другим веб-сервером (Apache на nginx) правила .htaccess не работают, и внутренние страницы отдают 404. Для nginx нужна директива try_files $uri $uri/ /index.php?$args.
OpenCart
- Пропишите новые абсолютные пути в обоих config.php: DIR_APPLICATION, DIR_SYSTEM, DIR_IMAGE, DIR_STORAGE.
- Очистите папки кэша и модификаций, затем «Обновить» в модификаторах.
- Проверьте, что ЧПУ работают: для nginx нужно правило перенаправления на index.php?_route_=.
1С-Битрикс
- Удобнее всего переносить через штатное резервное копирование и restore.php — он сам распакует архив и пропишет доступы к базе.
- После переноса пройдите «Проверку системы» на новом сервере: она покажет недостающие расширения PHP и ошибки прав.
- Перенесите агенты на cron и проверьте, что cron на новом сервере запускает /bitrix/modules/main/tools/cron_events.php.
Проверка после переноса командами
Пара полезных проверок с вашего компьютера:
curl -sI https://example.by/ | head -n 5
curl -sI http://example.by/ | grep -i location
nslookup -type=mx example.by
Первая показывает код ответа и сервер, вторая — работает ли перенаправление на HTTPS, третья — куда указывают почтовые записи домена.
Сколько держать старый хостинг
Минимум неделю после переключения DNS, а лучше до конца оплаченного периода. За это время всплывают забытые мелочи: еженедельная cron-задача, письмо от платёжной системы, обращения на старый IP. Если старый хостинг уже удалён, восстановить забытое будет не из чего.
Чек-лист переноса
- Инвентаризация: почта, cron, поддомены, PHP, интеграции по IP.
- Новый хостинг с той же версией PHP.
- Копия файлов без кэша.
- Перенос базы в той же кодировке.
- Новые доступы и пути в конфигурации.
- Проверка через hosts до смены DNS.
- Снижение TTL за сутки.
- Перенос почты, MX и SPF.
- Смена DNS в нерабочее время.
- SSL, cron, интеграции, редиректы.
- Резервные копии на новом хостинге.
- Старый хостинг — не раньше чем через неделю.
Частые вопросы
Можно ли перенести сайт без участия старого хостинга?
Да, если есть доступ к файлам по FTP или SSH и к базе через phpMyAdmin. Если доступов нет, их восстанавливают у старого провайдера.
Изменятся ли позиции в поиске после переноса?
Если адреса страниц, содержимое и HTTPS остались прежними, а сайт не был недоступен долго, — нет.
Нужна помощь?
Если не хочется разбираться самому или не получилось — напишите мне. Посмотрю сайт и скажу, что сломалось и сколько стоит исправить.
Перенос сайта на другой хостингНаписать в TelegramНаписать в Viber
