Как настроить 301 редирект с HTTP на HTTPS-версию сайта
Бывают ситуации, когда сайту требуется автоматическое перенаправление пользователей с одного адреса на другой. Этот процесс называется редиректом. Необходимость сделать редирект может возникнуть из-за многих причин: переезд сайта на обновленный адрес, изменение адресов страниц и т.п.
Чтобы пользователи могли найти сайт по новому адресу, нужно сделать так, чтобы их автоматически «перекидывало» со старого веб-ресурса на новый. Правильно сделать это можно с помощью постоянного редиректа, который называется 301 Redirect. Поговорим о нем подробнее.
Что такое 301-редирект
Редирект — это операция, при которой посетитель сайта с неактуальной страницы попадает на действующую. Это может быть http и https, либо адрес с www или без него. Редирект можно выполнять и в браузере, и на сервере. Последний вариант более предпочтителен, потому что не замедляет загрузку страниц.
Самые популярные виды редиректа — Temporary Redirect 302 и Permanent Redirect 301. Последний имеет множество названий: «код состояния HTTP 301», «301-редирект», «301-редирект страницы», «постоянный редирект». При перманентной переадресации страницы сервер выдает специальный ответ на запрос браузера. После редиректа страница будет недоступна по старому адресу, а прежний URL станет недействительным: его вес перейдет на новый адрес. Очень важно правильно настроить редирект: в противном случае сайт потеряет позиции в поисковике после перемещения контента или изменения домена. Если все сделано верно, поисковик поймет, что страницу переместили правильно, сохранит ее позицию и вес в выдаче. Secure Sockets Layer (SSL) — протокол безопасности, использующийся серверами и браузерами для защиты передачи данных пользователей в интернете. Браузер может блокировать ссылки, ведущие на сайты без SSL. Сертификат можно получить на своем хостинге в разделе «Домены» для каждого доменного имени. После установки SSL ресурс перейдет с протокола http на https. Чтобы после этого пользователи попадали на ваш веб-ресурс, настройте 301-редирект. Одинаковые URL (с http и https) без 301-редиректа будут распознаваться поисковиками как дубли. Из-за этого у сайта могут быть проблемы с индексацией. Все страницы сайта с http должны автоматически перебрасывать посетителя на https. Как это сделать: внесите изменения в файл .htaccess, который расположен в корневой папке веб-ресурса. Если его там нет, нужно создать файл .htaccess и добавить в него такой код: RewriteEngine On RewriteCond %{SERVER_PORT} !^443$ RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L] или воспользуйтесь вторым вариантом (если первый вариант не поможет): RewriteEngine On RewriteCond %{HTTPS} =off RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] если все варианты не помогли и возникает циклическая переадресация, добавьте: RewriteEngine On RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] или RewriteEngine On RewriteCond %{ENV:HTTPS} !on RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] Внимание! Не указывайте доменное имя. Эта комбинация перенаправит на https всех пользователей и поисковые системы. Теперь в адресной строке браузера нужно набрать названиедомена.ru и проверить, что вас за доли секунды перебросит на https://названиедомена.ru. Именно этого мы и добивались. Важно! Файл .htaccess обязательно должен иметь точку в начале. Если файл называется просто htaccess, редирект не сработает. Если после перехода сайта на https изменились некоторые шрифты, нужно найти в коде каждой страницы надпись с установкой шрифта. Обычно в ней есть http, и проблема именно в этом: Теперь замените http на https: Сайты http://названиесайта и http://www.названиесайта поисковики считают разными, хотя это адреса одного и того же ресурса. Поисковики один сайт проиндексируют, а другой будет расцениваться как дубль, что может повлиять на его продвижение. Чтобы этого не случилось, нужно «склеить» сайты — прописать 301 редирект в .htaccess. Если поисковые системы сначала проиндексировали версию с «с www», то главным зеркалом будет адрес вида www.site.ru, соответственно, в файл .htaccess нужно добавить редирект с адреса «без www» на адрес «с www». Выглядит это так: RewriteCond %{HTTP_HOST} !^www.name.site.ru$ RewriteRule ^(.*)$ http://www.name.site.ru/$1 [L,R=301] Напротив, если поисковики проиндексировали первой версию «без www», нужна переадресация с адреса вида www.site.ru на site.ru и главным зеркалом будет адрес вида site.ru. В файл нужно прописать: RewriteCond %{HTTP_HOST} ^www.(.+) [NC] RewriteRule .* http://%1/$0 [L,R=301] Иногда редирект на https нужен на всех страницах, кроме одной. В такой ситуации логично использовать постраничный редирект: RewriteEngine On RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} !^/page.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] Если нужно сделать редирект с http на https только одной страницы, например, page.php, вставьте в файл следующую конструкцию: RewriteEngine On RewriteCond %{HTTPS} =off RewriteCond %{REQUEST_URI} =/page.php RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] Если вам нужно перейти на другой домен и сохранить все позиции SEO, внесите в файл .htaccess: RewriteCond %{HTTP_HOST} ^www.old_name.ru$ [NC] RewriteRule ^(.*)$ http://new_name.ru/$1 [L,R=301] RewriteCond %{HTTP_HOST} ^old_name.ru$ [NC] RewriteRule ^(.*)$ http://new_name.ru/$1 [L,R=301] Переадресация для URL с параметрами и без них Как сделать редирект для URL без параметров? Если нужно поменять URL страницы, т.е. перетащить информацию с одной страницы на другую без потери значений SEO, пропишите в файл .htaccess следующее: RewriteRule ^(.*)old_page.html$ http://vash-sait.ru/new_page.html [R=301,L] Рассмотрим, как выполнить редирект с параметрами. Для примера возьмем URL http://name.site/articles.php?section=1, где параметр — это «section=1». Чтобы сделать редирект, пропишите такую конструкцию: RewriteCond %{QUERY_STRING} section=1 RewriteRule ^index.php http://name.site/articles.php? [R=301,L] Переадресация с index.php на главную В случае, если главная страница недоступна по нескольким адресам одновременно, используйте следующую конструкцию: RewriteCond %{THE_REQUEST} ^[A-Z]{3,9} /index.php HTTP/ RewriteRule ^index.php$ http://name.site/ [R=301,L] Редирект со страниц со слешем на без слеша (для всего сайта) Чтобы в файле .htaccess не было дублей, используйте конструкцию: RewriteCond %{REQUEST_URI} !? RewriteCond %{REQUEST_URI} !& RewriteCond %{REQUEST_URI} != RewriteCond %{REQUEST_URI} !. RewriteCond %{REQUEST_URI} ![^/]$ RewriteRule ^(.*)/$ /$1 [R=301,L] Можно также применить более короткий вариант: RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1 [R=301,L] Если нужны адреса со слешем, используйте такой вариант: RewriteCond %{REQUEST_URI} !? RewriteCond %{REQUEST_URI} !& RewriteCond %{REQUEST_URI} != RewriteCond %{REQUEST_URI} !. RewriteCond %{REQUEST_URI} !/$ RewriteRule ^(.*[^/])$ /$1/ [R=301,L] Обычно этот сервер используется на VPS-хостинге совместно с сервером Apache. В нем для настройки 301 редиректа добавляют строки в конфигурационный файл nginx.config в секции server. • C www на без www: server {#... if($host~ * www.(.*)) { set $host_without_www $1; rewrite ^ (.*) $ http: //$host_without_www$1 permanent; }#... } • Без www на с www: server {#... if($host~ * ^ [ ^ .] + .[ ^ .] + $) { rewrite ^ (.*) $ $scheme: //www.$host$1 permanent; }#... } Сохраните внесенные в файл изменения и перезапустите сервер. Cpanel Перейдите в блок «Домены», найдите «Перенаправления»: В появившемся окне выполните следующее: В этой панели можно вносить изменения в файлы nginx.config или .htaccess. При этом панель имеет встроенный механизм редиректа. Так, чтобы настроить переадресацию на https/http, снимите галочку с соответствующего пункта в разделе «WWW-домены». Beget Настроить 301 редирект инструментами панели управления нельзя. Хостинг управляется с сервера Apache, поэтому редирект можно настроить с помощью файла .htaccess. WordPress — одна из самых популярных CMS. Она имеет десятки плагинов для настройки постоянного редиректа, например: В качестве примера разберем редирект через плагин Redirection. Он настраивается через консоль сайта во вкладке «Инструменты» или через раздел плагинов. Для переадресации нужно заполнить 2 поля: Source URL и Target URL. В первой графе внесите старый адрес, а во второй — новый с www или без него. Редирект можно выполнить посредством внесения правок в файл .htaccess в разделе управления хостингом. Чтобы подключиться к нему, используйте FTP-клиента. Процесс совпадает с общей инструкцией для .htaccess. Битрикс Чтобы «перебросить» пользователя на новую страницу, отредактируйте файл .htaccess и внесите такой редирект: RewriteEngine On RewriteCond %{HTTP_HOST} ^www.sng-it.ru$ [NC] RewriteRule ^(.*)$ http://sng-it.ru/$1 [R=301,L] Если вы по какой-то причине не можете самостоятельно создать код, воспользуйтесь помощью специалистов техподдержки или автоматическими онлайн-генераторами. Чтобы поисковик считал 2 разных адреса одним сайтом, переадресация должна работать постоянно. 301 редирект — надежный и удобный инструмент, с помощью которого можно оптимизировать сайт и исправлять ошибки в его работе. Однако использовать 301 редирект нужно осторожно: неправильная настройка может стать причиной сбоя в работе сайта или потери позиций ресурса в поисковике.

Для чего нужен редирект

Настройка 301-редиректа через файл .htaccess

Склейка зеркал сайта
Редирект постранично
Изменение домена
Редирект со страниц без слеша на слеш (для всего сайта)
Постоянный редирект для Nginx
301 редирект для разных панелей управления хостингом


ISPmanager


Особенности редиректа для популярных CMSWordPress


Автоматическое создание кода
