Как настроить 301 редирект с http на https-версию сайта
Время от времени у владельцев сайтов появляется необходимость настроить редирект. Так называется процесс, при котором пользователей автоматически перебрасывает с одной страницы на другую. Необходимость в редиректе возникает по разным причинам. Обычно такая настройка нужна при переносе веб-ресурса на новый адрес или при изменении URL страниц. В статье вы узнаете, как правильно сделать постоянный 301-редирект.
Что такое 301 редирект
Редирект — перенаправление посетителей веб-ресурса с устаревших страниц на действующие, например, с http-версий на https. Вы можете выполнять настройки как на сервере, так и прямо на сайте. Лучше выбирайте первый вариант, т.к серверные директивы обрабатываются быстрее php-кода.

Существует два наиболее известных редиректа, и один из них — Permanent Redirect 301. У него несколько «имен», в том числе «301 редирект» и «постоянный редирект». При переадресации браузер отправляет на сервер определенный запрос и получает специальный ответ. После редиректа пользователи не могут попасть на страницу по прежнему адресу, т. к. он становится неактуальным. Вес старой страницы переходит на новую версию.
Зачем нужен редирект
Ошибки в работе с редиректом дорого обходятся владельцу веб-ресурса — при переносе контента или изменении домена сайт «падет» в выдаче. В остальных случаях поисковые системы понимают, что перенаправление выполняется корректно. При этом выше вероятность сохранения позиций при смене урла. Для безопасной передачи данных браузеры и серверы используютSSL — специальный протокол. Проверьте, установлен ли у вас SSL-сертификат. Если нет, то ссылки, которые ведут на страницы без SSL, могут блокироваться браузерами. Чтобы получить сертификат для каждого доменного имени, зайдите на свой хостинг, откройте раздел «Домены» и установите SSL. Протокол сайта поменяется с HTTP на HTTPS. Теперь настройте редирект, иначе одинаковые УРЛы, т. е. с http и https, будут идентифицироваться поисковыми системами как дубли, а это может вредить индексации. Чтобы корректно настроить перенаправление с http на https, откройте .htaccess в корневой папке сайта. Если файла нет, то создайте его. Перед htaccess обязательно должна быть точка, иначе все усилия окажутся напрасными. Пропишите в файле код: RewriteEngine OnRewriteCond %{SERVER_PORT} !^443$RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]. Это может не сработать. Попробуйте по-другому: RewriteEngine OnRewriteCond %{HTTPS} =offRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]. Если попытки оказались неудачными и вы столкнулись с циклической переадресацией, то воспользуйтесь таким вариантом: RewriteEngine OnRewriteCond %{HTTPS} offRewriteCond %{HTTP:X-Forwarded-Proto} !httpsRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] либо RewriteEngine OnRewriteCond %{ENV:HTTPS} !onRewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]. Обратите внимание: указывать доменное имя не нужно. Если все сделано правильно, то и пользователи, и поисковики будут попадать на https-версии страниц. Для проверки введите в адресной строке названиедомена.ru. Если вас мгновенно перебрасывает на https://названиедомена.ru, то все в порядке. Иногда после перехода на протокол HTTPS могут «сломаться» шрифты и картинки, путь к которым разработчик прописал вместе с доменом и протоколом. Если вы столкнулись с этой проблемой, то проверьте коды страниц. В них содержатся надписи с установкой шрифта, которые выглядят следующим образом: Вместо http пропишите https. У вас получится: Либо можно прописывать путь вообще без протокола (), тогда браузер будет подгружать ресурс по тому протоколу, по которому идет обращение к сайту. Сайты http://sitename и http://www.sitename воспринимаются поисковыми системами как разные, а ссылки ведут на один и тот же веб-ресурс. В результате тот или иной «близнец» определяется поисковиками как дубль, что негативно влияет на продвижение. Чтобы избежать такой ситуации, склейте зеркала сайта. Если поисковики в первую очередь проиндексировали сайт с www, то главным зеркалом станет УРЛ вида www.site.ru. В таком случае пропишите в .htaccess: RewriteCond %{HTTP_HOST} !^www.name.site.ru$RewriteRule ^(.*)$ http://www.name.site.ru/$1 [L,R=301] Возможна и обратная ситуация, когда поисковые системы сначала индексируют версию без www. Тогда надо добавить: RewriteCond %{HTTP_HOST} ^www.(.+) [NC]RewriteRule .* http://%1/$0 [L,R=301] Как настроить постраничный редирект Если вам нужен редирект для всех страниц, кроме одной, то пропишите в .htaccess: RewriteEngine OnRewriteCond %{HTTPS} =offRewriteCond %{REQUEST_URI} !^/page.phpRewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L] Чтобы настроить редирект на https для одной страницы, добавьте в файл: RewriteEngine OnRewriteCond %{HTTPS} =offRewriteCond %{REQUEST_URI} =/page.phpRewriteRule (.*) 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] Сначала рассмотрим, как настроить переадресацию без параметров. Чтобы перенести содержимое страницы и сохранить SEO-позиции, добавьте в .htaccess такую комбинацию: RewriteRule ^(.*)old_page.html$ http://vash-sait.ru/new_page.html [R=301,L] Перейдем к настройке с параметрами. Например, вам нужен редирект для УРЛа >http://name.site/articles.php?section=1, в котором section=1 — это параметр. Чтобы настроить переадресацию, пропишите следующее: RewriteCond %{QUERY_STRING} section=1RewriteRule ^index.php http://name.site/articles.php? [R=301,L] Иногда главная оказывается недоступной сразу по нескольким адресам. В таком случае воспользуйтесь комбинацией: RewriteCond %{REQUEST_URI} !?RewriteCond %{REQUEST_URI} !&RewriteCond %{REQUEST_URI} !=RewriteCond %{REQUEST_URI} !.RewriteCond %{REQUEST_URI} ![^/]$RewriteRule ^(.*)/$ /$1 [R=301,L] Существует и другой вариант: RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} ^(.+)/$RewriteRule ^(.+)/$ /$1 [R=301,L] Чтобы сделать такой редирект для всего сайта, добавьте в .htaccess следующее: RewriteCond %{REQUEST_URI} !?RewriteCond %{REQUEST_URI} !&RewriteCond %{REQUEST_URI} !=RewriteCond %{REQUEST_URI} !.RewriteCond %{REQUEST_URI} !/$RewriteRule ^(.*[^/])$ /$1/ [R=301,L] Если в качестве веб-сервера используется nginx, то директивы из файла .htaccess не будут обрабатываться. Поэтому для настройки редиректов следует добавить соответствующие правила в файл с конфигурацией интересующего вас веб-сайта. Переадресация с www на без www: server {#...if($host~ * www.(.*)) {set $host_without_www $1;rewrite ^ (.*) $ http: //$host_without_www$1 permanent;}#...} Еще один способ — добавить отдельную секцию server для www-поддомена: server {listen 443;server_name www.site.ru;return 301 https://site.ru$request_uri;ssl_certificate /путь/к/сертификату.cer;ssl_certificate_key /путь/к/ключу.key;} Переадресация с без www на c www: server {#...if($host~ * ^ [ ^ .] + .[ ^ .] + $) {rewrite ^ (.*) $ $scheme: //www.$host$1 permanent;}#...} Перезапустите nginx. if($_SERVER[’REQUEST_URI’] == ’/old-url/’){header("HTTP/1.1 301 Moved Permanently");header("Location: https://abcname.net/new-url/");exit();} здесь $_SERVER[’REQUEST_URI’] - адрес (URL) текущей страницы без названия домена. Приведем еще примеры настройки постраничной переадресации 301. Редирект со страницы page1.html на страницу page2.html: rewrite /старый__URL/ /новый_URL/ permanent; в секции сервер от нужного сайта/домена. Рассмотрим настройки для разных панелей управления. Cpanel Зайдите в «Домены» и выберите «Перенаправления». Перед вами появится окно. В нем нужно сделать следующее: 1. В строке «Тип» выбрать «Постоянный 301».. 2. Из списка «https://www» выберите домен, условно — primer.ru.. 3. В строке «Перенаправляет на» пропишите адрес http://primer.ru/.. 4. Откройте блок «Перенаправление www» и выберите «Перенаправлять только с www».. 5. Кликните «Добавить», чтобы сохранить изменения. ISPmanager Чтобы вносить изменения, используйте nginx.config либо .htaccess. Панель оснащена механизмом переадресации. Чтобы сделать редирект на https, зайдите в раздел «WWW-домены» и снимите галочку напротив соответствующего пункта. Beget Редирект на https подключается переключением галочки в настройках: Рассмотрим особенности переадресации для известных CMS. WordPress У этой популярной CMS множество плагинов для настройки постоянного редиректа — Redirection, Quick Page, Safe Redirect Manager и др. Разберемся, как выполнить переадресацию через Redirection. Чтобы его настроить, зайдите в консоль сайта и выберите «Инструменты» либо откройте раздел плагинов. Заполните два поля — Source URL и Target URL. В первом укажите старый адрес, а во втором пропишите новый — с www или без него. Также вы можете внести правки в .htaccess, который находится в разделе управления хостингом. Для подключения воспользуйтесь FTP-клиентом. «Битрикс» В Битрикс есть встроенная функция для создания редиректа (переадресации) на PHP — это функция LocalRedirect. Также вы можете воспользоваться готовым модулем, котороый позволит управлять редиректами через админ-панель. Если у вас не получается самостоятельно прописать код, обратитесь к специалистам техподдержки либо воспользуйтесь онлайн-генераторами. Чтобы поисковые системы понимали, что два разных адреса относятся к одному веб-ресурсу, нужен постоянный редирект. 301 Redirect — это полезный инструмент, благодаря которому вы сможете оптимизировать сайт и исправить многие ошибки. Следуйте нашей инструкции, и у вас все получится. 
Как настроить редирект через файл .htaccess

Как склеить зеркала сайта


Как сделать редирект для УРЛов с параметрами и без
Как настроить переадресацию с index.php на главную
Как настроить редирект со страниц без слеша на адреса со слешем
Как сделать редирект для Nginx
PHP редирект со старой страницы на новую
Постраничные редиректы
301 Redirect для разных панелей управления хостингом




Редирект и популярные движки


Как автоматически создать код