301, 302 редирект

Фактически http://www.yousite.ru и http://yousite.ru – это разные сайты.
Во-первых, это дублирование содержимого и ПС могут применять санкции за дублирование контента (копипаст)
Во-вторых, делится Тиц/PR для сайтов http://www.yousite.ru и http://yousite.ru, так как невозможно контролировать внешние ссылки на сайт – кто-то ставит ссылки
с www, а кто-то – без.
Редирект позволяет решить эти проблемы.

Что такое Redirect 301 и 302? Код “301? означает, что страница перемещена навсегда – «moved permanently», код “302? – временное перемещение «moved temporary», поэтому использование кода должно зависеть от целей перемещения. Пользователи, зашедшие через браузер, и поисковые боты будут перенаправляться по новому адресу, при этом, для поисковиков все свойства старого адреса (страницы) будут переданы новому URL. При редиректе произойдет склейка старого и нового адресов: параметры PageRank и тИЦ, а также вес страницы и ссылочный вес старого адреса будут переданы новому URL. Но не факт, что, тот же Google, будет своевременно передавать PR на перемещённую по редиректу 302 страницу, считая его “временным”, пока не “зазеркалит” оба сайта.

Поэтому основное внимание уделим 301 редиректу

Редирект 301 (301 Permanent Redirect или Moved Permanently) используется в нескольких случаях:

— при смене доменного имени, если старый домен вас не устраивает и вы переносите сайт на новый домен.
— при переносе страницы/раздела сайта, например при смене CMS сайта
— для склейки имени сайта с www и без него, в целях сохранения Тиц/PR сайта

Теперь рассмотрим основные варианты реализации 301 редиректа

Редирект с помощью директивы RewriteRule модуля mod_rewrite (.htaccess)

Для использования директивы RewriteRule необходимо удостовериться, что в httpd.conf на сервере подключен модуль mod_rewrite, mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch), а также влючена опция FollowSymLinks.

301 редирект c без-www на www

Например мы хотим, чтобы основным УРЛ-ом был www.yousite.ru а не yousite.ru, для этого создаем файл с названием .htaccess в корневой директории сайта и добавляем туда:

 

RewriteEngine On
RewriteCond %{HTTP_HOST} ^yousite.ru [NC]
RewriteRule ^(.*)$ http://www.yousite.ru/$1 [L,R=301]

Код ’(*.)$’ показывает, что мы хотим перенаправить все страницы http://yousite.ru на http://www.yousite.ru. Строчка с кодом ’(*.)$’ всегда должна быть последней!!!

301 редирект c www на без-www

Тоже самое, только наоборот.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yousite.ru [NC]
RewriteRule ^(.*)$ http://yousite.ru/$1 [L,R=301]

301 Редирект с одной страницы на другую

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

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yousite.ru [NC]
Redirect 301 /old.html http://yousite.ru/new.html

301 редирект разрешения файлов

Например нужно изменить все файлы .html на .php

RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.yousite.ru [NC]
RedirectMatch 301 (.*)\.html$ http://yousite.ru$1.php

301 Редирект всех файлов раздела на один файл.

Например вы больше не нуждаетесь в разделе сайта /films и хотите перенаправить все запросы к папке /films на один файл /new-kino.html. Для этого добавляем в .htaccess следующий код:

RewriteEngine On
RewriteRule ^films(.*)$ /new-kino.html [L,R=301]

Но что если вы хотите сделать редирект всей папки кроме одного файла? В этом примере все файлы из папки /films будут редиректится на на файл /new-films.html, Кроме файла /films/matrix.html котоый будет редиректится на /matrix-kino.html

RewriteEngine On
RewriteRule ^films/matrix.html /matrix-kino.html [L,R=301]
RewriteRule ^films(.*)$ /new-kino.html [L,R=301]

Еще раз напоминаю, что строка с (.*)$ должна всегда быть последней, иначе редирект будет кривым, сайт не будет работать, а вы будите ломать голову, думая в чем дело

301 Редирект динамического URL на новый файл.

Данный вариант нужен если вы хотите редиректить динамический URL с параметрами на новый статический файл. Например, запрос к файлу вида http://say-seo.ru/kino.jsp?id=555 будет перенаправлен на файл http://yousite.ru/kinofilms.html.

RewriteEngine On
RewriteRule ^kino.jsp?id=(.*)$ /kinofilms.html [L,R=301]

301 Редирект для различных ПС

В целом, редирект по разному воспринимается различными поисковыми машинами (Search Engines). Если Вы хотите испорльзовать редирект для “объединения” www-версии сайта с не-www версией, надо иметь ввиду следующие замечания.

Если на Ваш сайт часть ссылок установлена как на www, а часть как на без-www, то Вас наверняка интересует “объединение” веса ссылок на обе версии сайта в плане тпЦ/PR и ссылочного ранжирования.

Редирект для Yandex
Дело в том, что Яндекс объединяет ссылки для сайтов, которые он считает зеркалами, а редирект с site.ru на www.site.ru исключит доступ Яндекса к site.ru и, следовательно он не будет считаться зеркалом со всеми вытекающими последствиями. Для склейки Яндексом надо, чтобы оба имени сайта были доступны (отвечали “200 OK”) и имели одинаковый контент.

Дополнительно, надо определить главное зеркало сайта директивой Host в файле Robots.txt, например:

User-agent: *
Disallow:

User-agent: Yandex
Disallow:
Host: www.yousite.ru

 

* Грамотнее вынести директивы Host в отдельную секцию только для робота Яндекса (есть информация, что Google либо игнорирует секцию, в которой втречаются непонятные ему директивы, либо отрабатывает её некорректно);
** По стандарту robots.txt, в каждой секции “User-agent:” должна присутствовать хотя бы одна директива “Disallow:”, поэтому в примере стоит “пустая” директива, не запрещающая ничего. Для вашего случая пропишите собственные ограничения, если они есть.

Редирект для Google.

Google нормально понимает редиректы, для него ничего не нужно..

Важно! в файле .htaccess код RewriteEngine On должен упоминаться только 1 раз!!!

Редирект с помощью скрипта (отправки заголовков)

Редирект запросов можно осуществлять также с помощью скриптов, отправляя клиенту необходимые заголовки. Прописывать надо в index.(php/html и т.д)

HTML редиркт

 

HTTP/1.1 301 Moved Permanently
Location: http://www.yousite.ru/newdir/newpage.htm

PHP редирект

<?php
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://www.yousite.ru/newdir/newpage.htm”);
exit();
?>

ASP редирект

<%@ %>
<%
Response.Status=“301 Moved Permanently”
Response.AddHeader “Location”, “http://www.yousite.ru”
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://www.yousite.ru”);
}
</script>

ColdFusion редирект

<.cfheader statuscode=“301” statustext=“Moved permanently”>
<.cfheader name=“Location” value=“http://www.yousite.ru”>

JSP (Java) редирект

<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.yousite.ru/” );
response.setHeader( “Connection”, “close” );
%>

CGI PERL

$q = new CGI;
print $q->redirect(“http://www.yousite.ru/”);

Ruby on Rails

def old_action
headers[“Status”] = “301 Moved Permanently”
redirect_to “http://www.yousite.ru/”
end

Осуществление редиректа в nginx

if ($host = ‘www.yousite.ru’ ) {
rewrite ^(.*)$ http://yousite.ru$1 permanent;
}

ВАЖНО! Поскольку для переноса Тиц/PR/Виц старого сайта (страницы) на новый, может потребоваться несколько недель или месяцев, не уничтожайте старое доменное имя, сайт или страницу, пока этого не произойдёт. И еще раз! Строка с (.*)$ должна всегда быть последней!

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *