#Программирование
#301РЕДИРЕКТ
Время прочтения - 15 минут

Как настроить 301 редирект с HTTP на HTTPS-версию сайта

Время от времени у владельцев сайтов появляется необходимость настроить редирект. Так называется процесс, при котором пользователей автоматически перебрасывает с одной страницы на другую. Необходимость в редиректе возникает по разным причинам. Обычно такая настройка нужна при переносе веб-ресурса на новый адрес или при изменении URL страниц. В статье вы узнаете, как правильно сделать постоянный 301-редирект.

Что такое 301 редирект

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

301redirectshttphtppsgif6.gif

Редирект, когда ты зашел на устаревшую страницу

Существует два наиболее известных редиректа, и один из них — Permanent Redirect 301. У него несколько «имен», в том числе «301 редирект» и «постоянный редирект». При переадресации браузер отправляет на сервер определенный запрос и получает специальный ответ. После редиректа пользователи не могут попасть на страницу по прежнему адресу, т. к. он становится неактуальным. Вес старой страницы переходит на новую версию.

Зачем нужен редирект

Ошибки в работе с редиректом дорого обходятся владельцу веб-ресурса — при переносе контента или изменении домена сайт «падет» в выдаче. В остальных случаях поисковые системы понимают, что перенаправление выполняется корректно. При этом выше вероятность сохранения позиций при смене урла.

301redirectshttphtppsgif5.gif

Хотел сделать правильно, но получилось...

Для безопасной передачи данных браузеры и серверы используют SSL — специальный протокол. Проверьте, установлен ли у вас SSL-сертификат. Если нет, то ссылки, которые ведут на страницы без SSL, могут блокироваться браузерами.

Чтобы получить сертификат для каждого доменного имени, зайдите на свой хостинг, откройте раздел «Домены» и установите SSL. Протокол сайта поменяется с HTTP на HTTPS. Теперь настройте редирект, иначе одинаковые УРЛы, т. е. с http и https, будут идентифицироваться поисковыми системами как дубли, а это может вредить индексации.

Как настроить редирект через файл .htaccess

Чтобы корректно настроить перенаправление с 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].

Обратите внимание: указывать доменное имя не нужно.

301redirectshttphtppsgif4.gif

Настраиваешь редирект

Если все сделано правильно, то и пользователи, и поисковики будут попадать на https-версии страниц. Для проверки введите в адресной строке названиедомена.ru. Если вас мгновенно перебрасывает на https://названиедомена.ru, то все в порядке.

Иногда после перехода на протокол HTTPS могут «сломаться» шрифты и картинки, путь к которым разработчик прописал вместе с доменом и протоколом. Если вы столкнулись с этой проблемой, то проверьте коды страниц. В них содержатся надписи с установкой шрифта, которые выглядят следующим образом:

<script src="http://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js"></script>

Вместо http пропишите https. У вас получится:

<script src="https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js"></script>

Либо можно прописывать путь вообще без протокола (<script src="//ajax.googleapis.com/....></script>), тогда браузер будет подгружать ресурс по тому протоколу, по которому идет обращение к сайту.

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

Сайты http://sitename и http://www.sitename воспринимаются поисковыми системами как разные, а ссылки ведут на один и тот же веб-ресурс. В результате тот или иной «близнец» определяется поисковиками как дубль, что негативно влияет на продвижение. Чтобы избежать такой ситуации, склейте зеркала сайта.

redirectclone.gif

Вот их двое, а надо-то одну

Если поисковики в первую очередь проиндексировали сайт с 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 On
RewriteCond %{HTTPS} =off
RewriteCond %{REQUEST_URI} !^/page.php
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L].

Чтобы настроить редирект на https для одной страницы, добавьте в файл:

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].

301redirectshttphtppsgif2.gif

Забираем с собой SEO-позиции!

Как сделать редирект для УРЛов с параметрами и без них

Сначала рассмотрим, как настроить переадресацию без параметров. Чтобы перенести содержимое страницы и сохранить 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=1
RewriteRule ^index.php http://name.site/articles.php? [R=301,L].

Как настроить переадресацию с index.php на главную

Иногда главная оказывается недоступной сразу по нескольким адресам. В таком случае воспользуйтесь комбинацией:

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].

Как настроить редирект со страниц без слеша на адреса со слешем

Чтобы сделать такой редирект для всего сайта, добавьте в .htaccess следующее:

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^/])$ /$1/ [R=301,L].

Как сделать редирект для Nginx

Если в качестве веб-сервера используется 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.

PHP редирект со старой страницы на новую

if($_SERVER['REQUEST_URI'] == '/old-url/'){
header("HTTP/1.1 301 Moved Permanently");
header("Location: https://abcname.net/new-url/&quot;);
exit();
}

здесь $_SERVER['REQUEST_URI'] - адрес (URL) текущей страницы без названия домена.

Постраничные редиректы

Приведем еще примеры настройки постраничной переадресации 301.

Редирект со страницы page1.html на страницу page2.html: rewrite /старый__URL/ /новый_URL/ permanent; в секции сервер от нужного сайта/домена.

301 Redirect для разных панелей управления хостингом

Рассмотрим настройки для разных панелей управления.

Cpanel

Зайдите в «Домены» и выберите «Перенаправления».

redirekt_301_v_cpanel_1.jpg

Перед вами появится окно. В нем нужно сделать следующее:

  1. В строке «Тип» выбрать «Постоянный 301».
  2. Из списка «https://www» выберите домен, условно — primer.ru.
  3. В строке «Перенаправляет на» пропишите адрес http://primer.ru/.
  4. Откройте блок «Перенаправление www» и выберите «Перенаправлять только с www».
  5. Кликните «Добавить», чтобы сохранить изменения.

redirekt_301_v_cpanel_kak_sdelat.jpg

ISPmanager

Чтобы вносить изменения, используйте nginx.config либо .htaccess. Панель оснащена механизмом переадресации. Чтобы сделать редирект на https, зайдите в раздел «WWW-домены» и снимите галочку напротив соответствующего пункта.

redirekt_301_v_ispmanager_kak_sdelat.gif

Beget

Редирект на https подключается переключением галочки в настройках:

redirekt_301_v_beget_kak_sdelat2.jpg

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

Рассмотрим особенности переадресации для известных CMS.

WordPress

У этой популярной CMS множество плагинов для настройки постоянного редиректа — Redirection, Quick Page, Safe Redirect Manager и др. Разберемся, как выполнить переадресацию через Redirection. Чтобы его настроить, зайдите в консоль сайта и выберите «Инструменты» либо откройте раздел плагинов. Заполните два поля — Source URL и Target URL. В первом укажите старый адрес, а во втором пропишите новый — с www или без него.

redirekt_301_v_wordpress_kak_sdelat.jpg

Также вы можете внести правки в .htaccess, который находится в разделе управления хостингом. Для подключения воспользуйтесь FTP-клиентом.

«Битрикс»

В Битрикс есть встроенная функция для создания редиректа (переадресации) на PHP - это функция LocalRedirect. Также вы можете воспользоваться готовым модулем, котороый позволит управлять редиректами через админ-панель.

301redirectshttphtppsgif3.gif

Редирект настроен!

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

Если у вас не получается самостоятельно прописать код, обратитесь к специалистам техподдержки либо воспользуйтесь онлайн-генераторами.

Чтобы поисковые системы понимали, что два разных адреса относятся к одному веб-ресурсу, нужен постоянный редирект. 301 Redirect — это полезный инструмент, благодаря которому вы сможете оптимизировать сайт и исправить многие ошибки. Следуйте нашей инструкции, и у вас все получится.

А если у вас нет времени и желания разбираться с редиректами самостоятельно, вы всегда можете доверить это специалистам интернет-агентства Rubix. Для этого достаточно просто оставить заявку.


Авторы статьи
Тянуть
я