Перенаправление (редирект) через .htaccess подходит для сайтов на Apache, если сервер разрешает настройки из этого файла. Для Nginx правила задают в конфигурации сервера, а в Cloudflare — через Redirect Rules или Bulk Redirects. Для постоянного переноса страницы обычно используют код 301 или 308.
Что такое перенаправление
Перенаправление автоматически отправляет посетителя с одного адреса страницы (URL) на другой. Например, при открытии example.ru/old-page пользователь сразу попадает на example.ru/new-page.
Перенаправления используют, когда меняют адрес страницы, переносят сайт на другой домен, объединяют версии с www и без www или переводят сайт с HTTP на HTTPS.
Для постоянного переноса URL обычно используют код 301. Код 302 применяют для временного перенаправления. Коды 307 и 308 также обозначают временное и постоянное перенаправление соответственно, но сохраняют HTTP-метод запроса.
Как настроить перенаправление через .htaccess
Файл .htaccess используется на веб-серверах Apache. Он обычно находится в корневом каталоге сайта. Если файла нет, создайте его. Это возможно, если хостинг разрешает использовать .htaccess.
Внимание
Перед изменением .htaccess сохраните резервную копию файла. Ошибка в правилах может привести к ошибке 500 и сделать сайт недоступным.
Как настроить перенаправление одной страницы
Например, нужно перенаправить посетителей с example.ru/old-page на example.ru/new-page.
-
1
Откройте файловый менеджер хостинга или подключитесь к сайту по протоколу FTP.
-
2
Перейдите в корневой каталог сайта.
-
3
Откройте файл
.htaccess. Если файла нет, создайте его. -
4
Добавьте правило:
RewriteEngine On RewriteRule ^old-page/?$ /new-page [R=301,L] -
5
Сохраните файл.
-
6
Откройте старый URL в браузере и проверьте перенаправление. Правило сработает для URL
/old-pageи/old-page/.Если нужно перенаправить страницу на другой домен, укажите полный URL:
RewriteEngine On RewriteRule ^old-page/?$ https://new-site.ru/new-page [R=301,L]
При открытии старого адреса посетитель будет автоматически перенаправлен на новый.
Как перенаправить весь сайт на новый домен
Если сайт полностью перенесен на другой домен, можно сохранить структуру URL:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^(www\.)?old-example\.ru$ [NC]
RewriteRule ^(.*)$ https://new-example.ru/$1 [R=301,L]
Например, запрос old-example.ru/catalog будет перенаправлен на new-example.ru/catalog.
Если структура страниц на новом сайте изменилась, для отдельных URL настройте дополнительные правила.
Совет
Если исходный или новый домен содержит кириллические символы, для правил веб-сервера может потребоваться домен в Punycode.
Как перенаправить www на домен без www
Если основной адрес сайта — example.ru, а запросы к www.example.ru нужно перенаправлять на него, используйте:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.example\.ru$ [NC]
RewriteRule ^(.*)$ https://example.ru/$1 [R=301,L]
Замените example.ru на свой домен.
Как перенаправить HTTP на HTTPS
Чтобы перенаправлять посетителей с HTTP на HTTPS, используйте:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
После настройки проверьте несколько страниц сайта: главную, внутреннюю страницу и страницу с параметрами в URL.
Если сайт работает через CDN (сеть доставки контента) или обратный прокси, сервер Apache может получать запрос уже по HTTP, даже если посетитель открыл сайт по HTTPS. В таком случае проверьте, передает ли прокси заголовок X-Forwarded-Proto.
Например, при использовании доверенного прокси можно настроить перенаправление по этому заголовку:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} =http
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
Используйте такой вариант только если X-Forwarded-Proto передает доверенный прокси.
Как настроить несколько перенаправлений
Если нужно перенаправить несколько страниц, добавьте отдельные правила:
RewriteEngine On
RewriteRule ^old-page/?$ /new-page [R=301,L]
RewriteRule ^old-catalog/?$ /catalog [R=301,L]
RewriteRule ^contacts-old/?$ /contacts [R=301,L]
Если таких URL много, удобнее настроить перенаправления средствами веб-сервера, CMS или CDN.
Как настроить перенаправление на Nginx
Nginx не использует .htaccess. Если сайт работает на Nginx, перенаправление задают в конфигурации веб-сервера.
Например, перенаправить example.ru/old-page и example.ru/old-page/ на example.ru/new-page можно так:
location ~ ^/old-page/?$ {
return 301 https://example.ru/new-page;
}
После изменения конфигурации проверьте ее синтаксис и примените настройки.
Если у вас нет доступа к конфигурации Nginx, обратитесь к администратору сервера или в поддержку хостинга.
Как настроить перенаправление в Cloudflare
Если домен подключен к Cloudflare и трафик проходит через его прокси, перенаправление можно настроить в Redirect Rules.
-
1
Откройте Cloudflare и выберите нужный домен.
-
2
Перейдите в Rules → Overview.
-
3
Выберите Create rule → Redirect Rule.
-
4
Укажите условие, при котором нужно выполнять перенаправление.
-
5
Укажите целевой URL.
-
6
Выберите постоянное перенаправление 301.
-
7
Сохраните и опубликуйте правило.
Для большого количества URL можно использовать Bulk Redirects.
Если в исходных URL есть параметры запроса, проверьте настройку Preserve query string, чтобы сохранить их при перенаправлении.
Не создавайте одинаковое перенаправление одновременно в Cloudflare и .htaccess. В некоторых случаях это приводит к цепочке или циклу перенаправлений.
Как настроить перенаправление в CMS
Некоторые CMS позволяют создавать перенаправления через панель управления или дополнительные плагины. Такой способ удобен, если у вас нет доступа к .htaccess или конфигурации веб-сервера.
Например, в WordPress для управления перенаправлениями можно использовать плагин Redirection. В 1С-Битрикс перенаправления можно настроить средствами CMS или веб-сервера.
Перед настройкой проверьте, не существует ли уже правила для этого URL в CMS, веб-сервере или CDN. Несколько последовательных перенаправлений могут увеличить время загрузки страницы и усложнить настройку сайта.
Если перенаправление должно выполняться до запуска CMS, обычно удобнее настроить его на уровне веб-сервера или CDN.
Как выбрать способ настройки перенаправления
.htaccess или конфигурация Apacheweb.configНа виртуальном хостинге используйте .htaccess, если сервер работает на Apache и поддерживает этот файл. На VPS или выделенном сервере способ настройки зависит от установленного веб-сервера.
Как проверить перенаправление
После настройки откройте исходный URL в браузере. Проверьте:
- старый адрес перенаправляет на нужную страницу,
- сервер возвращает ожидаемый код, например, 301,
- между исходным и конечным адресом нет лишних перенаправлений,
- при переходе на HTTPS не возникает цикл перенаправлений,
- параметры URL передаются так, как предусмотрено настройкой.
Проверить код ответа и заголовок Location можно в инструментах разработчика браузера. Откройте вкладку Network и выберите запрос к исходному адресу.
Если после изменения .htaccess появилась ошибка 500 Internal Server Error, восстановите резервную копию файла и проверьте правила на синтаксические ошибки.
Частые вопросы
Можно ли настроить перенаправление без .htaccess?
Какой код использовать для постоянного перенаправления?
Можно ли использовать .htaccess на Nginx?
.htaccess используется Apache и не поддерживается Nginx. Для Nginx правила перенаправления задают в конфигурации веб-сервера.
Почему после изменения .htaccess появилась ошибка 500?
.htaccess. Верните предыдущую версию файла, если она есть, и проверьте добавленные правила.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊