Nazyrov.ru » » Что такое 301 редирект, зачем он нужен и как его правильно использовать

Что такое 301 редирект, зачем он нужен и как его правильно использовать

301 редирект

Привет, друзья! Я уже затрагивал тему 301 редиректа, когда переезжал на новый домен и рассказывал, как прописать главное зеркало для блога.

Сегодня я более детально расскажу, что такое редирект, и как сделать 301 редирект страницы или целого сайта.

Вообще редирект с кодом 301 не единственный в своем роде. Существует несколько редиректов с разным кодом ответа сервера.

Скорее всего, вы знаете принцип работы web страниц, но на всякий случай расскажу еще раз.

Когда пользователь в браузере вводит ссылку или переходит по какой-то ссылке, браузер формирует HTTP запрос и отправляет его серверу сайта. Сервер после получения запроса, возвращает HTTP ответ с определенным кодом, на основе которого браузер и формирует отображение web страницы. При этом если запрашиваемая страница найдена по указанному адресу, то сервер возвращает код ответа 200. Если страница не найдена, то вернется код 404. Если же страница перемещена на другой адрес, то вернется код редиректа.

Виды редиректов

Существуют следующие виды редиректов:

  • Несколько вариантов страниц на выбор (Multiple Choices) – код 300;
  • Страница перемещена навсегда по другому адресу (Moved Permanently) – код ответа 301;
  • Страница временно перемещена (Temporary Redirect) – код редиректа 302;
  • Требуемый ресурс можно найти по другому адресу (See Other) – код 303;
  • Содержимое не изменялось (Not Modified) – код редиректа 304;
  • Доступ к странице должен осуществляться через прокси (Use Proxy) — код 305;
  • Не используется (Unused) – код 306;
  • Временный редирект, аналогичный 303 (Temporary Redirect) – код 307;
  • Экспериментальный редирект (Permanent Redirect) – 308;

Да, редиректов немало. Но используется чаще всего только 301 и 302 редирект. Все остальные могут по разному обрабатываться в различных браузерах, поэтому их не желательно использовать.

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

  • Смена доменного имени;
  • Смена адреса страницы;

Если вы вдруг решили сменить домен или поменять URL конкретной страницы, при этом не сделав редирект (перенаправление) на новый URL, происходит следующее.

Сначала поисковик при индексации не находит запрашиваемую страницу, затем через какое-то время он ее выкидывает из индекса, после этого начинает индексировать новую страницу и только потом она появится в поиске, и не факт, что на прежних позициях. А скорее намного ниже. Весь этот процесс может занять от нескольких недель до нескольких месяцев, причем скорее всего получится второе. И как результат вы теряете время, позиции, поисковый трафик, авторитет сайта и потенциальных клиентов.

Чтобы всего этого избежать есть простое и верное решение, которое рекомендуют сами поисковые системы, это 301 редирект.

Конечно, если настроить 301 редирект, позиции сайта все равно просядут. Но через 2-3 апдейта они вернутся на свое место. Это единственный маленький минус редиректа. Зато есть немало плюсов:

  • Вы не теряете посещаемость. Посетители будут принудительно перенаправлены на новый адрес.
  • При смене домена вы не теряете вес сайта. Вес перетечет на новый домен.
  • Не теряете время на переиндексацию новых страниц.

Польза 301 редиректа очевидная!

Очень часто неопытные вебмастера вместо 301 редиректа ставят 302. Это неправильно! Этим вы сообщаете поисковым системам, что страница перемещена временно, соответственно они не будут индексировать новый адрес.

Ну что ж, что такое редирект и для чего он нужен мы разобрали, теперь расскажу как настроить 301 редирект.

Как настроить редирект.

Существуют два варианта создания 301 редиректа, по крайней мере больше я не знаю. Первый вариант – его настройка в файле .htaccess, и второй при помощи скрипта.

Второй вариант я нашел на популярном SEO форуме SBup.com, за что спасибо пользователю с ником egor1.

301 редирект в файле htaccess

Чтобы сделать 301 редирект для смены домена и соответственно всех URL в файле htaccess, нужно скачать указанный файл со своего хостинга к себе на компьютер и вставить всего две строки:

1
2
RewriteCond %{HTTP_HOST} старый домен.ru
RewriteRule (.*) http://новый домен.ru/$1 [R=301,L]

Конечно в зависимости от вашего движка и хостинга, файл htaccess может немного отличаться, но в целом все идентично.

У вас должен получиться htaccess такого вида:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# BEGIN McHost
Redirect 301 /admin/ /wp-admin/
# END McHost
 
# BEGIN WordPress
 
RewriteCond %{HTTP_HOST} старый домен.ru
RewriteRule (.*) http://новый домен.ru/$1 [R=301,L]
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ — [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
 
 
# END WordPress

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

1
Redirect 301 /старая страница.html http://ваш-сайт.ru/новая страница.html

Обратите внимание, что при этом старую страницу достаточно прописать после слеша, а новую нужно полностью.

301 редирект при помощи PHP скрипта

Как я уже заметил выше, этот способ я прочел на одном SEO форуме, увидеть его можете по этой ссылке. Но я с позволения автора продублирую его. Код тестировался на Joomla, но я думаю будет прекрасно работать и на других движках работающих с PHP.

Итак, объясню как пользоваться скриптом на движке WordPress.

Открываем файл function.php и вставляем сам скрипт:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
<?php class Redirect {   private $index;       private $site;        public $uri;  public $mode;         public function __construct()         {             //Preparing for redirect         $this->uri = $_SERVER['REQUEST_URI'];
                $this->site = 'http://тут ваш сайт.ru';
                $this->mode = 'dev';
 
                $this->set(array(
                        '/старая страница(обязательно со слешем в начале)' => '/новая страница (со слешем в начале обязательно)',
                    ));
 
                //Если вы пользуетесь CMS Joomla, а именно с Virtuemart, то при смене SEO суффикса у товара можно использовать такой простой код который перенаправляет со старой страницы с старым суффиксом на страницу с новым суффиксом, чтобы использовать эту функцию просто уберите два слеша в начале вызова функции ($this->suffix), и напишите в соотвествующих местах старый и новый суффиксы
 
                //$this->suffix('старый суффикс','новый суффикс');
 
                $this->accept();
        }
 
        public function set($toSet)
        {
            if(!empty($toSet)){
                        foreach($toSet as $from => $to){
                        $this->index[$from] = $to;
                }
                } else {
                        if($this->mode != 'prod'){
                                echo "Nothing to redirect!";
                        }
                }
        }
 
    public function suffix($old, $new)
        {
            if(eregi($old ,$this->uri)){
                if(!empty($old)&&!empty($new)){
                        $tmp = $this->uri;
                        $url = str_replace($old, $new, $tmp);
 
                        header('HTTP/1.1 301 Moved Permanently');
                            header('Location: ' . $this->site . $url);
                    } else {
                        die('Empty suffix');
                    }
                    exit();
            }
        }
 
        public function accept()
        {
                if(!empty($this->index)){
                        foreach($this->index as $key => $value){
                                if($this->uri == $key){
                                    echo $this->site . $value;
                                    header('HTTP/1.1 301 Moved Permanently');
                                        header('Location: ' . $this->site . $value);
                                        exit();
                                }
                        }
                } else {
                        if($this->mode == 'dev'){
                                echo "You don't have URL's to redirect!";
                        }
                }
        }
}
Не забудьте указать в данном коде старые страницы и новые, на который должен быть редирект, и вместо записи «тут ваш сайт», свой домен.

Затем открываем файл index.php и в самом начале вставляем вот этот код:

1
2
require('function.php');
$rm = new Redirect();

Таким способом можно редиректить сколько угодно, 10-20 страниц. Достаточно продублировать кусок кода:

1
'/старая страница(обязательно со слешем в начале)' => '/новая страница (со слешем в начале обязательно)',

Мне данный способ очень понравился, тем более что он будет работать, даже если у вас сервер не Apache.

Ну и небольшой совет напоследок.

После того, как поисковые системы полностью проиндексировали страницы по новому адресу, нужно убрать редирект, и можно удалять старые адреса полностью.

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

Самые полные и достойные комментарии оставили – Баяс, Андрей Косолапов и Игорь Черноморец. Прошу предоставить ваши WMR для вручения заслуженного денежного спасибо! Комментарии ответы действительно достойные, спасибо вам!

Запись опубликована в .
Как вам статья?
Полная ерундаНичего интересногоТак себеХорошоОтлично (1 голосов, оценка: 5,00 из 5)
Loading...Loading...

Понравилась статья? Поделись с другими, нажав на одну из кнопок.


Комментариев 24 на “Что такое 301 редирект, зачем он нужен и как его правильно использовать
  1. Привет, Андрей. Статья отличная с точки зрения полезности. Я месяца 4 назад пытался настроить редирект, когда у меня вдруг в Яндексе появилось 55 дублей только одной моей статьи, но ничего путного из этого не вышло ( то ли я неправильно делал, то ли советы были кривые ), но в конце-концов плюнул на это дело и закрыл дубли в роботсе.

    А что оказался в числе лауреатов мини-конкурса, для меня неожиданный и приятный сюрприз и вдвойне приятно, что случилось это именно на твоем блоге ( все-таки мы с тобой ровесники в плане ведения блога ). Спасибо.

    • Привет, Баяс! Бывает действительно проще закрыть в роботсе дубли, чем делать редирект. Конечно все зависит от того, что именно создает дублированные страницы.

      Баяс, а кошелек для поощрения?

  2. Ох уж этот редирект, скоро мне предстоит с ним продуктивно поработать :)

    • Да, Максим, тебе предстоит немалая работа, если ты про мебельный сайт на uCoz ))

  3. Ничего себе статья :)))

    А я уже думал, что знаю все о редиректе, а оказалось...и 50% не знал :)

    Твоя статья однозначно идет в закладки!

    По поводу приза...

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

    Огромное спасибо Андрей!

    Мой кошелек -R245561763431

    • Игорь, тем не менее твои комментарии очень полезны для моего блога. Спасибо!

      Теперь по поводу редиректа. На самом деле я и половину не описал из его возможностей. Есть много нюансов, например, переезд с кириллического домена на обычный, редирект с одной корневой папки одного домена на другую папку другого домена, смена страниц с HTML на PHP расширение, редирект с поддомена на основной домен и наоборот.

      Об этом есть классная статья на сайте интернет агенства «Пиксель Плюс».

      • Ой ой ой! Спасибо за наводку.Ну хорошо, придется учиться, учиться и еще раз учиться :)))

        По поводу того, что мои комменты полезны для твоего блога...мммм...я польщен! Аж покраснел :))

        • Андрей, денюшку получил! Огромное спасибо

        • Тебе спасибо, Игорь, за комментарии.

  4. Неоднократно переделывал один свой движок. В следствии чего менялись ссылки. И чтобы не потерять позиции сайта. Пришлось разработать один модуль. Суть его следующая. В админке есть интерфейс создания сопоставления старых ссылок и новых. Пользователь (или бот) зайдя на сайт, профильтруется по данной базе, и если будет найдено сопоставление — выполниться редирект с нужным кодом. Или отобразиться ошибка (404, 500), это уже как будет настроено.

    Так же мне пришлось сделать еще один модуль, отслеживающий ошибки и не найденные ссылки сайта, типа 404. Очень полезная вещь оказалась. Благодаря ему, теперь известно для каких страниц делать редирект.

    Самое интересное то, что даже спустя год, еще идут переходы по старым ссылкам.

    Не знаю, может подобные модули есть под WP. Знаю что в друпале последняя функция есть по умолчанию (т.е. сразу же после установки).

  5. Редиректы, конечно, штука удобная. Особенно если знать все тонкости их использования. К примеру, с помощью 302 можно скрывать партнерские ссылки и тому подобное. А за статью спасибо, много полезного)

    • Ну, если честно, я бы вообще не советовал пользоваться редиректами, а уж 302 тем более, если нет другого пути.

      А партнерские ссылки думаю удобнее закрыть в Ajax или обычный nofollow.

  6. Статейка не плохая, но для меня еще это все запутано. Впервые слышу об редиректах.

  7. Андрей, привет! Спасибо за приз, если честно, то не ожидал. Номер кошелька, выслал в письме.

    А на счет редиректа, то я его уже прохлопал. Старый блог тю тю, при чем полностью. Так что интересно было почитать.

    ps. На будущее, взял статью на заметку, вернее добавил в закладки.

  8. Есть плагин под названием WP No External Links, я заметил, что его многие используют, так как он делает редирект превращая внешние ссылки во внутренние. Это конечно здорово, внешних ссылок должно быть по минимуму на блоге, но все почему-то забывают о опасности редиректа. Раньше поисковики не знали, как ходить по таким ссылкам и просто их не индексировали, но сейчас они это умеют делать и расценивают редирект, как обман — не естественное продвижение.

    Я не критикую статью, просто хочу предупредить, что часто используемый редирект наказывается поисковыми системами — понижение в выдаче.

    • Именно поэтому я и рекомендую использовать редирект только в крайнем случае, если только нет другого более верного решения :)

Добавить комментарий для Pavel Отменить ответ

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

Можно использовать следующие HTML-теги и атрибуты:

Pavel