301 редирект помогает решать ряд специфических задач по перенаправлению трафика и ботов поисковых систем с одного документа на другой. Способов реализации этой возможности существует несколько, но обо всем по порядку.
Для чего используется 301 редирект?
Этот тип редиректа позволяет настраивать постоянное перенаправление с одного документа на другой. После переиндексации поисковой базы, в органической выдаче пользователям будет показываться новая страница.
Причины использования 301 редиректа:
- У сайта сменилось доменное имя, производится его перенос.
- Указание зеркал сайта, к примеру, с www и без. Также это актуально в случае установки SSL сертификатов.
- Сменился URL-адрес страницы с целью SEO-продвижения, например, в него были прописаны ключевые слова.
- Устранение проблем с дубликатами страниц.
- Переезд страницы на новый адрес, но при этом необходимо сохранить ее вес и пользовательский опыт.
301 редирект vs тег Canonical
Перед тем как понять, в каких случаях используется 301 редирект, а в каких тег Canonical, необходимо разобраться в ключевых их различиях.
При 301 редиректе происходит физическое перенаправление посетителя или поискового робота. Т.е., этот способ переадресации ориентирован как на ботов, так и на людей. Тег Canonical в свою очередь, предназначен исключительно для роботов. К примеру, у нас есть две страницы, обозначим их как 1 и 2, при этом, вторая является основной (канонической), а первая – дубликатом (содержание страниц идентично). Наша задача состоит в том, чтобы в поисковой выдаче ранжировалась основная страница, т.е. вторая, но при этом первая также должна работать. В этом случае, на помощь приходит тег Canonical, который позволяет указать поисковому роботу на каноническую страницу.
К слову, если на сайте содержатся дубли, но не указан тег Canonical, то поисковые алгоритмы их объединят в группу, после чего будет выбрана одна, которая появится в органической выдаче. Проблема заключается в том, что выбор часто падает не на целевой документ.
301 или 302 редиректы
Оба этих вида редиректов физически перенаправляют пользователей и роботов на альтернативные URL-адреса, однако, у них есть существенные различия. 301 редирект сообщает поисковым краулерам о том, что страница переехала на новый адрес на постоянной основе. А 302 – на временной, к примеру, на период проведения какой-либо акции.
Важно не допускать путаницы в использовании 301 и 302 редиректов, в противном случае, это негативно скажется на SEO-продвижении страницы или ресурса в целом.
Где настраивается 301 редирект?
Разберем наиболее популярные и универсальные способы настройки 301 редиректа на сайте.
Как настроить 301 редирект с помощью файлов сервера Apache
Внесение специальных правок в конфигурационные файлы сервера Apache – это наиболее распространенный способ настройки 301 редиректа. Отличия между этими файлами заключаются в том, что httpd.conf является главным конфигурационным файлом сервера, и все настройки в нем влияют на все директории. А правила из .htaccess относятся исключительно к той директории, в которой он находится.
Расположение файла httpd.conf варьируется в зависимости от типа операционной системы и версии Apache:
- FreeBSD (версия сервера 1.3) – /usr/local/etc/apache/httpd.conf.
- FreeBSD (версия сервера 2.2) – /usr/local/etc/apache22/httpd.conf.
- Убунта (версия сервера 1.3) – /etc/apache/httpd.conf.
- Убунта (версия сервера 2.2) – /etc/apache2/apache2.conf.
- Linux – /etc/httpd/conf/httpd.conf.
Через плагины в CMS
Настроить 301 редирект можно не только через конфигурационные файлы, но и с помощью специальных плагинов для CMS. Этот вариант подходит для пользователей, которые не хотят разбираться в параметрах файлов сервера.
WordPress
Вордпресс является самой популярной CMS системой, поэтому для него написано большое количество плагинов, с помощью которых можно настроить перенаправления.
Redirection
Плагин с широким функционалом, заточен исключительно под настройку редиректов. Вот часть функций, которые в нем представлены:
- Настройка переадресации со страницы 404-ошибки.
- Простая переадресация с одной страницы на другую.
- Создание сложных правил перенаправления с нескольких страниц на одну и прочее.
- Возможность автоматического добавления 301 редиректа при удалении или изменении страниц.
Плагин полностью бесплатен, прост в использовании, и при этом не затрагивает конфигурационные файлы сервера.
Simple 301 Redirects
Также простой плагин, но с менее богатым функционалом. Интерфейс представлен в виде двух полей: URL-адрес страницы-исходника и URL-адрес страницы, куда настраивается 301 перенаправление (исключительно). Его удобно использовать при переезде сайта с одного домена на другой, либо при небольшом количестве страниц, с которых требуется настроить 301 редиректы. Т.к. отсутствуют возможности настройки автоматических правил, для больших массивов адресов его использовать нецелесообразно.
SEO Redirection
В отличии от прошлого плагина, SEO Redirection позволяет настраивать все виды редиректов, а не только 301. В целом, это мощный инструмент, с большим количеством функций, со средней оценкой пользователей в 4 звезды. Есть возможность настройки автоматических правил, а также просмотра статистики по перенаправлением отдельно взятых URL-адресов.
Плагин SEO Redirection
Easy Redirect Manager
Плагин представлен в двух версиях: платной и бесплатной. Содержит весь необходимый функционал, подойдет как для новичков, так и для опытных пользователей.
Битрикс
В случае с Битриксом, настройка 301 редиректа возможна, например, через модуль «Редирект мастер» или же через правку файла .htaccess:
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain.ru$ [NC] RewriteRule ^(.*)$ http://domain.ru/$1 [R=301,L]
Отредактировать сам файл можно напрямую через админку сайта:
Настройка 301 редиректа в Битриксе
Через PHP-условие
Данная возможность настройки 301 редиректов больше подходит для самописных CMS-систем, работающих на PHP. Для ее реализации необходимо добавить в код индексного файла (чаще всего index.php) функцию header() с указанием типа редиректа и Location – адреса сайта.
Принцип работы редиректов на основе PHP заключается в том, что браузер запрашивает индексный файл, далее сервер сообщает о том, что он перемещен в другое место. После чего, браузер направляет запрос по указанному адресу, получает ответ и отображает новую страницу.
Итак, перейдем непосредственно к настройке. Пример, 301 редирект с одного домена на другой:
$ref=$_SERVER["QUERY_STRING"]; if ($ref!="") $ref="?".$ref; header("HTTP/1.1 301 Moved Permanently"); header("Location: http://newdomain.ru/".$ref);
Обратите внимание, указывается только новый домен.
Настройка 301 редиректа с одной страницы на другую:
header("HTTP/1.1 301 Moved Permanently"); header("Location: http://www.domain.ru/catalog/page.htm");
Здесь указывается страница, на которую срабатывает перенаправление.
HTML-редирект
Подходит для статичных HTML-сайтов, у которых требуется настроить редирект на одну или несколько страниц. Этот способ подразумевает добавление в код специального метатега, разберем сценарии.
Редирект на другой домен:
<meta http-equiv="refresh" content="0;https://new-domain.ru">
Редирект на другую страницу:
<meta http-equiv="refresh" content="0;https://domain.ru/index2.html">
Параметр content отвечает за задержку, указывается число, равное секундам.
Правила настройки файла .htaccess для 301-редиректа
Правил настройки 301 редиректов существует достаточно много и применяются они в зависимости от поставленной задачи. Разберем самые популярные.
С одной страницы на другую
Короткая версия варианта:
Redirect 301 /primer-page1.html/ https://site.ru/primer-page1.html/
Развернутая версия:
RewriteCond %{REQUEST_URI} ^/primer-page1.html/$ RewriteRule ^.*$ https://site.ru/primer-page1.html? [R=301,L]
С главной страницы на каталог
Redirect 301 / https://site.ru/catalog
С каталога на главную
Redirect 301 /catalog https://site.ru
С одного домена на другой
RewriteEngine On RewriteCond %{HTTP_HOST} domain1.ru RewriteRule (.*) https://domain2.ru/$1 [R=301,L]
301 редирект с http на https
При установке SSL-сертификата, настраивается перенаправление с http на https:
RewriteCond %{HTTPS} !=on RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Либо альтернатива:
RewriteCond %{HTTPS} off RewriteCond %{HTTP:X-Forwarded-Proto} !https RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
301 редирект с www на без www
RewriteEngine On RewriteCond %{HTTP_HOST} ^www.domain.ru$ [NC] RewriteRule ^(.*)$ http://domain.ru/$1 [R=301,L]
С без www на с www
RewriteEngine On RewriteCond %{HTTP_HOST} ^ domain.ru RewriteRule (.*) http://www. domain.ru/$1 [R=301,L]
301 редирект для отдельного IP-адреса
RewriteEngine On RewriteCond %{REMOTE_ADDR} 111.222.333.444 RewriteRule ^(.*)$ http://site.ru [R=301,L]
Перенаправление только с главной страницы сайта
В этом случае, 301 редирект будет срабатывать исключительно при посещении главной страницы сайта:
RewriteEngine On RewriteRule ^$ https://domain.ru [R=301,L]
Борьба с дубликатами
Два одинаковых URL-адреса, но у одного на конце есть слеш, а у другого он отсутствует. Для поисковых систем они будут разными, т.е. дубликатами. 301 редирект позволяет бороться с подобным явлением. Например, убираем слеш на конце адреса:
RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1 [R=301,L]
Меняем отображение расширения страницы, к примеру, с .htm на .html:
RewriteEngine on RewriteBase / RewriteRule ^(.*)\.htm$ $1.html [R=permanent]
Перенаправление с 404 на главную страницу
ErrorDocument 404 http://www.site.com/301.html
Обратите внимание, требуется активация функции mod_rewrite с помощью команды RewriteEngine on, но, если применяется несколько правил перенаправления в одном .htaccess, то данная команда прописывается один раз.
Памятка по используемым символам и обозначениям
Директива RewriteCond определяет условие для правила RewriteRule при соблюдении которого, срабатывает редирект. Правила представляются в виде регулярных выражений.
Метасимволы:
- \ – экранирующий слеш, сохраняет символы, идущие после него в исходном виде.
- ^ – начало строки.
- $ – конец строки.
- ! – знак отрицания.
- . – любой символ.
- ( ) – применяется для обозначения группировки символов.
- # – комментарии.
Модификаторы:
Применяются для обычных символов, спецсимволов или их группировок. С помощью них можно изменять базовые значения.
- ? – ставится после символа, который может присутствовать или отсутствовать. Например, htm?l – под правило попадает и htm и html.
- * – ставится перед символом, который может повторятся от 0 (отсутствует полностью) до 65536 раз. Пример, htm*l, под правило попадают htm, html, htmm.
- + – аналогично предыдущему, но символ может повторятся от 1 до 65536 раз.
Флаги:
Указываются в квадратных скобках, перечисляются через запятую, представляют собой дополнительные опции.
- NC (nocase) – если правило срабатывает, то регистр символов не имеет значения.
- R (redirect) – прекращает процесс преобразования, возвращает ответ браузеру в виде редиректа.
- L (last) – данная ссылка является окончательной, при этом останавливается процесс преобразования.
Как проверить 301 редирект?
Для проверки единичной страницы, достаточно зайти на нее и визуально оценить процесс перенаправления. Другими словами, если при заходе на страницу произошел редирект на другой документ, адрес сайта в строке браузера поменялся, то все настроено корректно. Однако, при этом нельзя будет узнать какой тип редиректа сработал. Также этот способ усложнит проверку массива страниц. В этом случае, потребуется софт, либо специализированные сервисы:
- bertal.ru – сервис, который позволяет получить HTTP-заголовок страницы.
- Screaming Frog SEO – платная программа, которая позволяет сканировать сайт и находить редиректы.
Итак, мы подробно рассмотрели вопрос о том, как сделать 301 редирект, и показали наиболее универсальные способы. Надеемся статья была вам полезной.