301редирект

15.11.2015 iMarketing5

Что такое 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
63
64
65
66
67
68
69
70
71
72
73
<?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
'/старая страница(обязательно со слешем в начале)' =&gt; '/новая страница (со слешем в начале обязательно)',

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

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

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

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

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

#301#редирект

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

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