Новичкам про 301 редирект

12
seopro
На сайте с 22.06.2006
Offline
67
5677

Полезная статья для новичков:

Темы с обсуждением различных типов редиректов постоянно всплывают на многих SEO-шных форумах. Информации на эту тему много, но в основном разрозненной. В этой статье я рассмотрю 301 redirect, а в следующей порой незаслуженно игнорируемый 302 redirect.

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

- при смене домена, когда по каким то причинам старый домен вас не устраивает и вы переносите контент на новый домен.

- при переносе страницы сайта, например при смене CMS сайта

- для склейки имени сайта с www и без него. Данный пункт уже не столь актуален для Google.

Использование 301 редиректа - это отличный метод сохранения ваших позиций в поисковых системах, при перемещении сайта или отдельных его страниц. Ниже рассмотрены примеры реализации данного типа редиректа в примерах.

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

Используется для указания одной версии сайта с www как основной ( то есть http://www.kass.ws и http://kass.ws ), для этого создаем файл с названием .htaccess в корневой директории сайта.

RewriteEngine On

RewriteCond %{HTTP_HOST} ^kass.ws [NC]

RewriteRule ^(.*)$ http://www.kass.ws/$1 [L,R=301]

Часть кода ’(*.)$’ показывает, что бы берем все содержимое которое идет после http://kass.ws и присваиваем к ’http://www.kass.ws’ и редиректим данный URL. Если ваш .htaccess файл уже содержить строчку RewriteEngine On, то второй раз ее использовать не надо.

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

Код для обратной замены выглядит так

RewriteCond %{HTTP_HOST} ^www.kass.ws [NC]

RewriteRule ^(.*)$ http://kass.ws/$1 [L,R=301]

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

Например вы больше не нуждаетесь в разделе сайта Super discount и хотите перенаправить все запросы к папке /superdiscount на один файл /hot-offers.php. Для этого добавляем в .htaccess следующий код.

RewriteRule ^superdiscount(.*)$ /hot-offers.php [L,R=301]

Но если вы хотите сделать редирект всей папки кроме одного файла? В следующем примере все файлы из папки /superdiscount будут редиректится на на файл /hot-offers.php, КРОМЕ файла /superdiscount/my-ebook.html котоый должен редиректится на /hot-to-make-million.html

RewriteRule ^superdiscount/my-ebook.html /hot-to-make-million.html [L,R=301]

RewriteRule ^superdiscount(.*)$ /hot-offers.php [L,R=301]

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

Данный вариант пригодится если вы хотите редиректить динамический URL с параметрами на новый статический файл.

RewriteRule ^article.jsp?id=(.*)$ /latestnews.htm [L,R=301]

То есть теперь, запрос к файлу вида http://www.kass.ws/article.jsp?id=8632 и/или http://www.kass.ws/article.jsp?id=1245 будет отправлен на файл http://www.kass.ws/latestnews.htm.

Массовый редирект новых файлов.

Тепепь перейдем к самому сложному моменту, когда вам надо редиректить массу URL-ов, например после смены вашей CMS. Тут сразу возникает ряд проблем. Во-первых, внесение всех изменившихся адресов в .htaccess файл займет очень много времени, да и само по себе занятие малоприятное. Во-вторых, слишком много записей в .htaccess файле будут тормозить Apache сервера. И в третьих, при внесении такого количества информации высока вероятность, что вы где то ошибетесь. По этому, самый лучший выход, это нанять програмиста который вам напишет динамический редирект.

Нижеприведенный пример написан на PHP, но так же может быть выполнен на любом языке. Предположим вы перешли на новую систему ссылок на вашем сайте и все файлы оканчивающиеся на старый id должны быть средирекчены. Сначала создаем в базе таблицу, которая содержит старый id и новый URL для редиректа.

old_id INT

new_url VARCHAR (255)

Далее пишем код который свяжет ваши старые id с новыми URL-ами

После этого, добавляем следующую строчку в .htaccess:

RewriteRule ^/product-(.*)_([0-9]+).php /redirectold.php?productid=$2

затем создаем PHP файл redirectold.php, который будет поддерживать 301 редирект:

<?php

function getRedirectUrl($productid) {

// Connect to the database

$dServer = “localhost”;

$dDb = “mydbname”;

$dUser = “mydb_user”;

$dPass = “password”;

$s = @mysql_connect($dServer, $dUser, $dPass)

or die(”Couldn’t connect to database server”);

@mysql_select_db($dDb, $s)

or die(”Couldn’t connect to database”);

$query = “SELECT new_url FROM redirects WHERE old_id = “. $productid;

mysql_query($query);

$result = mysql_query($query);

$hasRecords = mysql_num_rows($result) == 0 ? false : true;

if (!$hasRecords) {

$ret = ’http://www.yoursite.com/’;

} else {

while($row = mysql_fetch_array($result))

{

$ret = ’http://www.yoursite.com/’. $row[”new_url”];

}

}

mysql_close($s);

return $ret;

}

$productid = $_GET[”productid”];

$url = getRedirectUrl($productid);

header(”HTTP/1.1 301 Moved Permanently”);

header(”Location: $url”);

exit();

?>

Теперь все запросы к вашим старым URL-ам будут вызывать redirectold.php, который найдет новый URL и вернет 301 ответ с вашей новой ссылкой.

Источник: http://www.galayda.com

• Возьму сайты на продвижение от 1500 рублей. БЕЗ ПРЕДОПЛАТЫ.
Light Phantom
На сайте с 17.03.2007
Offline
188
#1

Полезная статья :) У новичков должно стать меньше вопросов по этому поводу :)

R
На сайте с 20.10.2006
Offline
89
#2

Какие действия предпримет ПС после получения кода 301 или 302?

Удалит из индекса эту ссылку?

MobileBattery.ru: аккумуляторы и блоки питания для мобильных устройств (http://www.mobilebattery.ru) с доставкой по РФ.
Foxtrot
На сайте с 15.01.2007
Offline
31
#3

СПС, действительно многое прояснило...

seopro
На сайте с 22.06.2006
Offline
67
#4
rdva:
Какие действия предпримет ПС после получения кода 301 или 302?
Удалит из индекса эту ссылку?

Большое количество зеркал засоряет базы данных поисковых систем и приводит к появлению дубликатов в результатах поиска. Поэтому когда робот Яндекса обнаруживает несколько зеркал сайта, он выбирает одно из них в качестве основного, остальные из индекса удаляются.

K
На сайте с 31.01.2001
Offline
737
#5

seopro, а в каких случаях Яндекс оставляет у себя в базе URL, выдающий 301? (при этом он пишет размер документа порядка 500-600 байт и более-менее нормальный сниппет, как ни странно).

И главное, почему он в этом случае не хочет вместо этого выдавать другой URL с этого же сайта, куда идет редирект?

Выделенные полосы в Москве (http://www.probkovorot.info) привели к снижению скорости до 23%.
seopro
На сайте с 22.06.2006
Offline
67
#6
Kost:
seopro, а в каких случаях Яндекс оставляет у себя в базе URL, выдающий 301? (при этом он пишет размер документа порядка 500-600 байт и более-менее нормальный сниппет, как ни странно).
И главное, почему он в этом случае не хочет вместо этого выдавать другой URL с этого же сайта, куда идет редирект?

Вы не знаете ответ на этот вопрос? :)

Регистрация: 31.01.2001

Сообщения: 5,287

Репутация:69968

kartrid
На сайте с 19.09.2007
Offline
68
#7
seopro:
Вы не знаете ответ на этот вопрос? :)

Регистрация: 31.01.2001
Сообщения: 5,287
Репутация:69968

я не знаю ))

Играю в покер, мой Блог (http://www.blog-poker.ru)
Jefa
На сайте с 01.02.2007
Offline
191
#8

А что вы все про яндекс?

Единственная ПС чтоль? :)

mastserg
На сайте с 14.04.2005
Offline
108
#9

301 работает как для яндекса так и для остальных

P.S. и все равно будут спрашивать про редирект, за последнюю неделю я 3 раза разжевывал это каждый раз в новом топике, новички элементарно не желают даже этот раздел просмотреть на пару страниц в глубь.

Постоянно покупаю места под статьи, много (/ru/forum/188576)
seopro
На сайте с 22.06.2006
Offline
67
#10
mastserg:
301 работает как для яндекса так и для остальных
P.S. и все равно будут спрашивать про редирект, за последнюю неделю я 3 раза разжевывал это каждый раз в новом топике, новички элементарно не желают даже этот раздел просмотреть на пару страниц в глубь.

может стоить прикрепить какую-нибудь тему чтоб им видно было

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий