В статье рассказывается:
- Почему 301 редирект, а не canonical
- Виды редиректов
- Когда требуется настройка 301 редиректа
- Как сделать 301 редирект через .htaccess и настроить его при помощи директив
- 301 редирект без htaccess
- Проверка редиректа 301
- Какие ошибки допускают при его настройке
- Что делать, если 301 редирект не работает
-
Чек-лист: Как добиваться своих целей в переговорах с клиентамиСкачать бесплатно
Многие компании нередко сталкиваются с необходимостью сменить URL-адрес для отдельной страницы или сайта целиком. Чтобы этот процесс прошел максимально безболезненно для пользователей, нужно прописать 301 редирект. Настройка 301 редиректа представляет собой несложный процесс, об основных этапах которого вы узнаете из этой статьи.
Почему 301 редирект, а не canonical
Например:
<link rel="canonical" href="
Тег rel=canonical актуален в тех случаях, когда необходимо сообщить поисковой машине единый целый адрес контента страницы. При таком варианте вашему сайту не помешает использовать динамические переменные атрибутов для URL-ов. Динамические URL могут способствовать индексации нескольких версий URL для каждой отдельной страницы, что выражается в дублировании контента (крайне нелюбимый вариант для большинства поисковиков).
Конечно, тег с атрибутом rel=canonical может выручить в целом ряде случаев, однако он не способен полноценно заменить 301 редирект сайта. Для этого есть несколько оснований:
-
Поисковые машины не воспринимают тег rel=canonical в качестве адресного указания к действию, а вот 301 редирект оказывается той самой инструкцией, обязательной к исполнению.
-
Многие системные администраторы отдают предпочтение именно 301 редиректу потому, что он прописывается в одном файле для всего сайта, а код тега rel=canonical вставляется на каждой странице.
Тег rel=canonical становится актуальным при переадресации страниц блога (при наличии доступа к его коду, позволяющего внести в него необходимые модульные теги). Если же необходимость в использовании 301 редиректа возникает тогда, когда сайт давно и успешно работает и наполнен нужным контентом, это может привести к потере исходных страниц и связанных с ними комментариев, социальных связей, которые наверняка уже прописаны в SEO.
Виды редиректов
Существуют четыре основных вида редиректа. Роботы поисковых систем и браузеры определяют по состоянию кода http. Рассмотрим самые главные виды.
301 Moved Permanently
301 редирект выступает в качестве постоянного, передающего порядка 90-99 % ссылочного веса. Подобная переадресация в обязательном порядке указывает на перенос страницы на новый адрес, в связи с чем прежний URL прописывается как устаревший.
302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)
302 редирект является временным. Он передает 0 % от ссылочного веса, и его рекомендуют использовать крайне редко. Сегодня мажоритарное большинство сайтов в Интернете применяет протокол HTTP, определяющий принципы обработки URL-адресов. В двух версиях этого протокола ответ сервера может иметь разный статус:
-
HTTP 1.0: 302 ответ сервера это «Moved Temporarily» – текущий документ временно перемещен на другой URL.
-
HTTP 1.1: произошло изменение ответа сервера на «Found» – текущий документ найден.
307 Moved Temporarily (HTTP 1.1 Only)
Для протокола HTTP 1.1 307 редирект стал продолжателем 302 редиректа. Несмотря на то, что основные поисковые боты воспринимают его как аналог 302-го, рекомендуется отдавать предпочтение именно 301 редиректу. Использование 307 редиректа актуально для тех случаев, когда контент перемещается только на время (к примеру, в период проведения технических работ на сайте), а поисковые системы воспринимают ваш сервер как совместимый с HTTP 1.1.
Однако отследить, действительно ли ваш сервер определяется поисковыми системами в качестве совместимого с новым протоколом, практически невозможно, поэтому для временно перемещенного контента лучше использовать 302 редирект.
Когда требуется настройка 301 редиректа
301 редирект обычно используется в следующих случаях:
-
при склеивании зеркал сайта с www и без www;
-
при перемещении сайта на новый домен;
-
при переносе сайта на новую CMS;
-
при изменении URL-адресов страниц;
-
при устранении дублей страниц сайта.
В последнем случае 301 редирект используется крайне редко, однако именно он позволяет эффективно устранить дубли без необходимости в «ковырянии» кода самой CMS. Это особенно актуально при необходимости в поисковой оптимизации сайтов, при которой вопрос наличия или отсутствия дублей у страниц стоит особенно остро.
При использовании редиректа 301 происходит передача pr-страниц и тИЦ сайта, в связи с этим передается ссылочный вес новому URL. При этом вы избавляетесь от необходимости решать вопрос с возможными санкциями на старый домен со стороны поисковых систем, поскольку 301 редирект не транслирует их на новый адрес. Это приятное дополнение для всех, кто решает использовать данный алгоритм.
Нередко в Сети можно встретить мнение о том, что 301 редирект не обязательно применять. Однако при оптимизации любого сайта вы наверняка столкнетесь с обратным.
Например, каждый сайт в «начале своего пути» может загрузиться по двум адресам, один из которых использует www, а другой нет. Но в итоге происходит размывание ссылочной массы. Дело в том, что при прописывании ссылки на ваш сайт другие ресурсы могут ставить в начале адрес www, а могут обойтись и без него. Ссылочная масса размывается, а поисковики для оптимизации используют только один вариант.
Многие наверняка вспомнят те деньки, когда поисковые системы воспринимали один и тот же сайт, написанный в двух видах (с www и без www), как два разных ресурса. Поэтому, чтобы избежать потерь ссылочной массы и добиться успешной оптимизации вашего сайта, просто необходимо использовать 301 редирект.
Как сделать 301 редирект через .htaccess
Перед началом настройки 301 редиректов необходимо определиться с операторами регулярных выражений, которые помогут сделать правильную настройку:
-
^ — ограничение слева;
-
$ — ограничение справа;
-
— 0 и более символов;
-
+ — 1 и более символов;
-
. — любой символ;
-
\ — экранирование;
-
() — переменная;
-
[] — диапазон значений.
Настройка 301 редиректа может быть выполнена разными способами. Большинство вебмастеров предпочитает делать это через файл .htaccess. Он прописан практически в каждой популярной CMS и в корне вашего сайта. Скачивание .htaccess можно осуществить через FTP при помощи клиента FileZila.
Данный файл открывается тестовым редактором, например, Notepad++. Теперь поверх всех кодов редиректов надо прописать следующую строку:
RewriteEngine On
Как дальше настроить 301 редирект при помощи директив
301 редирект с www на без www
С www на без www:
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule (.*) http://site.ru/$1 [R=301,L]
С без www на www:
RewriteCond %{HTTP_HOST} ^site.ru$ [NC]
RewriteRule (.*) http://www.site.ru/$1 [R=301,L]
В ситуациях, когда приведенные выше коды не срабатывают, рекомендуем воспользоваться такой записью для редиректа с www на без www:
RewriteCond %{HTTP_HOST} ^www\.(.*)$
RewriteRule ^(.*)$ http://%1/$1 [L,R=301]
Конечно же, в данном случае адрес site.ru необходимо заменить доменом вашего сайта. Когда все этапы будут выполнены, следует сохранить файл .htaccess и закачать его на сервер, не забыв заменить им старый файл.
Редирект 301 без слеша
Когда вы проектируете сайт, на этапе прописывания адреса необходимо определиться с использованием слеша в конце URL, поскольку поисковые системы воспринимают как разные следующие два вида URL:
После выбора подходящего варианта можно приступить к прописыванию следующих редиректов:
Если вы не хотите использовать слеш в конце:
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
Если слеш в конце адресной строки необходим:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Редирект 301 с одной страницы на другую
Когда возникает необходимость в 301 редиректе со старого URL-адреса на кириллице на новый URL-адрес (вне зависимости от его языка), конечная запись приобретает вид:
RewriteRule ^старый-урл.html /new-page.html [R=301,L]
В предыдущих абзацах за основу был взят 301 редирект с URL одного вида на другой в пределах одного сайта. При этом процессе применяются mod_rewrite и директива RewriteRule. Однако запись редиректа можно сделать гораздо проще, используя директиву Redirect:
Redirect 301 /old-page.html http://site.ru/new-page.html
Применение каждого из этих двух вариантов оправдано, поскольку оба редиректа корректны и передают ссылочный вес и другие показатели. Отличие заключается лишь в использовании директив разных модулей, поэтому синтаксис будет различным. Если вы решили остановить выбор на директиве Redirect, для начала нужно прописать старый адрес страницы без http://site.ru, а затем новый адрес полностью.
301 редирект с https на http
Если вам необходимо настроить 301 редирект с протокола http на протокол https, вы можете выбрать один из множества существующих способов. Чаще всего используются следующие:
Правило №1:
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
Если это правило не сработает (а это бывает крайне редко, однако результатом может стать циклическая переадресация), можно воспользоваться правилом №2:
RewriteCond %{HTTP:X-HTTPS} !1
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
301 редирект с домена на домен
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]
Эта строчка должна заменить две предыдущие. При этом следует помнить, что необходимо:
-
прописать строку Options +FollowSymLinks;
-
прописать строку RewriteEngine On;
-
расположить строки с редиректом СРАЗУ после строки RewriteEngine On;
-
использовать только имя файла .htaccess;
-
проследить расположение файла .htaccess в корневом каталоге;
-
не забыть поменять domain.com на свой домен.
Пожалуй, на этом можно остановиться. Однако если Google хорошо понимает 301 редирект, Яндексу требуется редактирование или создания другого файла. Поэтому следующий ниже этап обязателен к выполнению.
Отправляетесь в корневой каталог сайта и ищете файл с именем robots.txt. При его отсутствии сгенерируйте необходимое в Блокноте. В этом файле нужно прописать следующий код:
User-agent: Yandex
Disallow:
Host: domain.com
При наличии необходимого файла и отсутствии этих строк, нужно добавить их в конце через абзац.
Когда вы указываете главное зеркало в строчке Host, не забудьте поставить свой домен.
301 редирект без htaccess
Настройку 301 редиректа можно провести при помощи скриптов PHP, ASP, JavaScript. В этом случае вам необходимо передать браузеру или поисковому роботу следующие заголовки:
В этом случае может быть множество вариантов дальнейших шагов, которые помогут это сделать:
php 301 редирект
Данный код 301 редиректа прописывается в самом начале скрипта PHP файла. Вместо http://vash-sait.ru/novaya-stranitsa.html вам следует ввести адрес страницы, на которую поисковый бот или пользователь должны быть перенаправлены.
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://vash-sait.ru/novaya-stranitsa.html");
exit();
?>
Редирект на ASP
<%@ Language=VBScript %>
<%
Response.Status=“301 Moved Permanently”
Response.AddHeader “Location”, “http://vash-sait.ru/novaya-stranitsa.html”
response.end
%>
РедиректASP.NET
<script runat=“server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(“Location”,“http://vash-sait.ru/novaya-stranitsa.html”);
}
</script>
ДляRuby on Rails
def old_action
headers[“Status”] = “301 Moved Permanently”
redirect_to “http://vash-sait.ru/novaya-stranitsa.html”
end
ДляJSP (Java)
<%
response.setStatus(301);
response.setHeader( “Location”, “http://vash-sait.ru/novaya-stranitsa.html” );
response.setHeader( “Connection”, “close” );
%>
ДляCGI PERL
$q = new CGI;
print $q->redirect(“http://vash-sait.ru/novaya-stranitsa.html”);
ColdFusion редирект
<.cfheader statuscode=“301” statustext=“Moved permanently”>
<.cfheader name=“Location” value=“http://vash-sait.ru/novaya-stranitsa.html”>
Проверка редиректа 301
Проверить 301 редирект не составит особого труда. Вам необходимо лишь ввести в строке браузера старый адрес своей страницы или сайта. Когда настройка проведена верно, вы будете перенаправлены на новый URL-адрес. Иногда для корректной проверки 301 редиректа требуется провести чистку кэша вашего браузера. Как правило, после всех манипуляций проверка проходит успешно.
Для окончательного подтверждения правильности настройки 301 редиректа рекомендуется проверить ответ сервера при помощи специальных сервисов (например, 2ip.ru) или использовать программу Netpeak Spider. Она позволит получать дополнительную информацию о вашем сайте. Ответ сервера должен быть «301» или же «301 MovedPermanently -> 200 OK».
Какие ошибки допускают, настраивая 301 редирект
-
Создание многошагового редиректа. Чем сложнее процесс перехода, тем больше вероятность снижения его скорости и потери ссылочного веса.
-
Применение неработающих в вашем случае редиректов. Каждый редирект имеет свои нюансы, которые надо учитывать при выборе подходящего именно вам.
-
Использование внутренних редиректов без смены ссылок на новые адреса. Когда процесс внедрения редиректов на сайте завершен, необходимо убедиться в том, что каждая страница вашего сайта уже ссылается на новую, а внутри сайта у вас нет ссылок на страницы, с которых происходит редирект.
-
Редирект на не релевантные страницы/контент. Чем выше релевантность страницы (похожей страницы или ветки каталога/раздела, к которому принадлежала данная страница), тем она привлекательнее для редиректа.
-
Неверный выбор между rel=canonical и 301 редиректом. Подробнее об этом изложено выше.
-
Редирект, конечной точкой которого является не 200-я страница. Редирект должен вести на правильно работающую страницу с 200 ответом сервера. Иначе вы можете сбить поисковых роботов, которые будут выдавать 404 ответ.
-
Редирект robots.txt. К примеру, нужно прописывать директиву Host для Яндекса при склейке доменов.
Что делать, если 301 редирект не работает
Когда переадресация работает не так, как вы ожидали, или не работает вообще, необходимо провести корректировку и исправить возникшие ошибки.
Если не работает редирект 301 в .htaccess, но переадресация закодирована и верно прописана в этом файле, следует проверить состояние установки расширения mod_rewrite в Apache. Как правило, этот модуль стоит по умолчанию, однако при его отсутствии описанная выше кодировка .htaccess отказывается работать. Необходимо убедиться в том, что в коде присутствуют две строки, разрешающие модулю корректно работать: mod_rewrite и ReWriteEngine.
Если вы используете [NC] в строках RewriteCond, это поможет вам получить информацию о несоответствии входных данных с установленными характеристиками. Проигнорировав этот код, вы рискуете столкнуться с тем, что адреса URL с заглавными и строчными буквами могут работать некорректно. Применение L в коде [L,R=301] указывает на то, что файл движка воспринимается как последняя строчка кода всего процесса подтверждения ввода данных.
Если вы не уверены в верности конфигурации кода в .htaccess, лучше использовать код L в строке, обозначенной как приоритетной.
Подводя итоги, нельзя не отметить, что, часто применяя 301 редирект, вы можете ухудшить состояние сайта, поэтому не стоит забывать о необходимости обновления входящих ссылок сайта на корректные URL.
Если при настройке 301 редиректа вы не будете использовать старые входящие ссылки вашего сайта и применять для перехода через них многократную переадресацию (301, затем 301, затем еще раз 301), скорость загрузки сайта снизится, а это может привести к ухудшению процесса оптимизации.
Чем больше переадресаций, тем меньше шансов у сканеров добраться до целевого сайта. Продвигать такой сайт в поисковых системах будет крайне трудно. Кроме того, при обновлении ссылок вашего сайта необходимо убедиться в том, что обновляются и файлы sitemap.xml новыми обновленными URL.
Если даже после прочтения нашей статьи у вас не получилось настроить 301 редирект или в процессе работы возникают ошибки, вам на помощь придут квалифицированные специалисты.