Найти в Дзене
Alex Grem

Как сделать переадресацию сайта на другой домен: 2 рабочих способа

Приветствую, уважаемые читатели! Сегодня разберем практическую задачу, с которой рано или поздно сталкивается каждый веб-мастер: как правильно перенаправить весь трафик со старого домена на новый. Эта необходимость возникает при ребрендинге, смене доменной зоны или переходе на более запоминающийся адрес. В этой статье мы рассмотрим два надежных способа настройки 301 редиректа (постоянного перенаправления), который крайне важен для сохранения SEO-позиций и передачи «веса» старого домена новому. Это самый правильный и производительный способ на серверах Apache. Файл .htaccess лежит в корне вашего сайта и управляет работой веб-сервера на уровне директории. # Включаем механизм преобразования URL
RewriteEngine On
# Включаем отслеживание символьных ссылок (для совместимости)
Options +FollowSymLinks
# Правило 301 редиректа для ВСЕХ страниц
RewriteCond %{HTTP_HOST} ^старый-сайт\.ru$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.старый-сайт\.ru$ [NC]
RewriteRule ^(.*)$ https://www.новый-сайт.ru/$1 [R
Оглавление

Приветствую, уважаемые читатели! Сегодня разберем практическую задачу, с которой рано или поздно сталкивается каждый веб-мастер: как правильно перенаправить весь трафик со старого домена на новый. Эта необходимость возникает при ребрендинге, смене доменной зоны или переходе на более запоминающийся адрес.

В этой статье мы рассмотрим два надежных способа настройки 301 редиректа (постоянного перенаправления), который крайне важен для сохранения SEO-позиций и передачи «веса» старого домена новому.

Способ 1: Классика через .htaccess

Это самый правильный и производительный способ на серверах Apache. Файл .htaccess лежит в корне вашего сайта и управляет работой веб-сервера на уровне директории.

Пошаговая инструкция:

  1. Создайте или откройте файл .htaccess в корневой папке вашего старого сайта.
  2. Добавьте следующий код, заменив https://www.новый-сайт.ru на ваш реальный адрес.
# Включаем механизм преобразования URL
RewriteEngine On

# Включаем отслеживание символьных ссылок (для совместимости)
Options +FollowSymLinks

# Правило 301 редиректа для ВСЕХ страниц
RewriteCond %{HTTP_HOST} ^старый-сайт\.ru$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.старый-сайт\.ru$ [NC]
RewriteRule ^(.*)$ https://www.новый-сайт.ru/$1 [R=301,L]

Как это работает?

  • RewriteEngine On — активирует движок преобразования URL (mod_rewrite).
  • RewriteCond — это условия. В данном случае мы проверяем, что обращение идет к нашему старому домену (с www или без).
    %{HTTP_HOST} — содержит адрес, который ввел пользователь.
    ^ и $ — обозначают начало и конец строки.
    \. — экранирование точки (так как в регулярках точка — специальный символ).
    [NC] — флаг, означающий «без учета регистра» (No Case).
    [OR] — логическое «ИЛИ» между условиями.
  • RewriteRule — это само правило перезаписи.
    ^(.*)$ — ловит
    любой путь на старом сайте. (.*) — это группа, которая захватывает всю часть URL после домена (например, /page/about.html).
    https://www.новый-сайт.ru/$1 — это цель, куда мы перенаправляем пользователя. $1 подставляет ту самую захваченную группу (.*). Это значит, что страница старый-сайт.ru/catalog/tovar перенаправится на новый-сайт.ru/catalog/tovar, что очень важно для SEO.
    [R=301,L] — флаги:
    R=301 — код ответа «Moved Permanently» (постоянно перемещен).
    L — Last, указывает, что это последнее правило, которое нужно применить для данного URL.

✅ Преимущества: Высокая скорость, выполняется на уровне сервера, минимальная нагрузка на PHP.

Способ 2: Универсальный вариант через PHP

Этот способ пригодится, если у вас нет доступа к .htaccess (например, на некоторых хостингах) или вам нужна более сложная логика для редиректа.

Лучшая PHP-реализация

Разместите этот код в самом начале каждого PHP-файла на старом сайте (чаще всего его добавляют в index.php в корне).

<?php
// Куда перенаправляем (без слеша в конце)
$new_domain = 'https://www.новый-сайт.ru';

// Получаем текущий URL-путь (всё, что после домена)
$request_uri = $_SERVER['REQUEST_URI'];

// Собираем полный новый URL
$new_url = $new_domain . $request_uri;

// Устанавливаем HTTP-заголовок с кодом 301
header('HTTP/1.1 301 Moved Permanently');

// Отправляем браузеру заголовок с новым location
header('Location: ' . $new_url);

// Немедленно завершаем выполнение скрипта
exit();
?>

Как это работает?

  1. Определяем новый домен в переменной $new_domain.
  2. $_SERVER['REQUEST_URI'] — получаем путь и параметры запроса. Если пользователь зашел на старый-сайт.ru/category/?page=1, то REQUEST_URI будет /category/?page=1.
  3. Формируем новый URL, склеивая новый домен и старый путь.
  4. Отправляем специальные HTTP-заголовки:
    Сначала header('HTTP/1.1 301 Moved Permanently') явно указывает код ответа 301 для поисковых систем.
    Затем header('Location: ...') говорит браузеру, куда перенаправить пользователя.
  5. exit() — немедленно прекращает выполнение скрипта, чтобы избежать лишней нагрузки.

❗ Важно: Этот код должен быть самым первым в файле, до любого вывода (даже пробелов или пустых строк перед <?php), иначе возникнет ошибка «Headers already sent».

Золотой стандарт: всегда используйте первый способ через .htaccess, если у вас есть такая возможность. Он более правильный, быстрый и надежный с точки зрения архитектуры.

Надеюсь, этот гайд был вам полезен! Успешных миграций и стабильного трафика на вашем новом домене