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

SEO и контекстная реклама

Обычно редирект или перенаправление используют, когда что-то в сайте меняется. Например, вы купили новое доменное имя и хотите перенести весь свой старый сайт на него. Или у вас на сайте изменился url некоторых страниц, и вы хотели б чтобы посетители попадали на новые страницы. Также что бы поисковые системы узнали о новом расположении старой страницы, и склеили их правильно надо использовать редирект.

 

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

 

На рнр такой скрипт будет выглядеть так:

 

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.new_site.ru/index.html");
exit();
?>

 

Что тут происходит, обращаясь к странице на которой этот скрипт расположен веб сервер направляет ответ браузеру что страничка переехала сюда http://www.new_site.ru/index.html. Куда и отправляется посетитель, это справедливо и для пауков поисковых систем.

 

Более полный кусок этого скрипта будет смотреться так:

 

<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref!='') $ref='?'.$ref;
header('HTTP/1.1 301 Moved Permanently');

header('Location: http://www.new_site.ru/index.html'.$ref);
exit();
?>

 

Напоминаю, что данный код на странице должен располагаться первым.

 

Мне же больше нравиться использовать редирект, конфигурируя файл настройки веб сервера apache (файлы эти .htaccess или httpd.conf). Для этого необходимо чтобы модули mod_alias или/и mod_rewrite были включены в файле php.ini.

 

Redirect 301 /old_site.html http://new_site.ru/new_page.html

 

Или

 

Redirect permanent /old_site.html http://new_site.ru/new_page.html

 

Или

 

RedirectPermanent /old_site.html http://new_site.ru/new_page.html

 

 

 

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

 

Если вы например перешли с html на php, но сохранили имена. То вам удобно будет воспользоваться редиректом с помощью RedirectMatch. С её помощью используя регулярные выражения вы перенаправите все запросы с файлов в прежнем расширении на их новые варианты.

 

RedirectMatch /(.*)\.html$ /$1.php

 

 

С помощью упомянутых выше способов можно перенаправить не только страницы, но и целые сайты на новые доменные имена. Рассмотрим примеры.

 

RedirectPermanent / http://www.new_site.ru/

 

Redirect 301 / http://www.new_site.ru/

 

В этом случае все посетители старого сайта будут перенаправлены на новый http://www.new_site.ru/ . Если написать http://www.new_site.ru/index2.php то все перенапряватся на страницу index2.php.

 

Существует ещё редирект с использованием модуля mod_rewrite. Хорошая штука, дающая много разных полезных возможностей, в т.ч. для перенаправления. Но в силу сложного синтаксиса используется не так часто, хотя в последнее время её популярность выросла. Используют его чаще

для склейки домена с www и без. Так как иногда они интерпретируются поисковиками и браузерами как 2 разных адреса сайта. Полезно это чтобы входящие ссылки, ТИЦ и pr сопоставлялись с 1 адресом, а не дробились на 2. Вообще это уже называется склейка доменов. С её помощью можно склеить особенно хорошо pr, несколько сложнее ТИЦ. Этим часто пользуются те, кто хотят себе присвоить эти параметры с совсем левых прокаченных сайтов. При этом однако ваш сайт будет восприниматься как зеркало, того чужого и следовательно все ваши страницы никогда при этом не попадут в индекс.

 

Для того чтобы модуль mod_rewrite заработал надо удостовериться что этот модуль подключен в httpd.conf, также требуется включение опции FollowSymLinks. Если всё это включено того вот пример того как перенаправить с домена с www на домен без www

 

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

 

И наоборот с домена без www, на домен с www:

 

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

 

 

Так же есть ещё способы осуществления редиректа с помощью атрибута http-equiv="refresh" тега  МЕТА, также и с использованием JavaScripta – но эти способы поисковики не любят и лучше от них вовсе отказаться.

 

Комментарии  

 
#4 avadon7 03.09.2010 14:43
рад что оказался полезным:)
Что касается вашего замечания - согласен, над сайтом надо ещё работать и работать, что бы он хоть на что-то стал похож). К сожалению не так много времени на него остается(. Но обязательно возьмусь... Кстати можете что то и присоветовать...что бы вы изменили, добавили бы?
Цитировать
 
 
#3 Гость 29.08.2010 02:09
Прочитано, принято, понято :) то что искал)
Не в обиду владельцу сайта, но ИМХО, над дизайном стоило бы поработать чуть подольше и поусерднее. Всё-таки внешний вид сайта играет немаловажную роль. Могу судить по личному опыту: после того как-на http://rem-stroy.com/ - моём сайте был нарисован и свёрстан новый диз, читатели стали задерживаться гораздо надольше, да и самому приятно смотреть. Подумайте над этим, думаю моё мнение разделят многие..
Цитировать
 
 
#2 avadon7 12.08.2010 11:03
Если честно, не вникал особо :-|
Цитировать
 
 
#1 Гость 02.08.2010 18:59
А как сделать редирект, если у меня ссылки проиндексировал ись вообще без расширения (стояла диретива в htaccess), выглядит как ссылка на каталог хотя это страницы, а мне надо сделать расширение на php.
Цитировать