Наверх

Редиректы: 301-й и другие

Автор kbaott, 01.10.2010 | Просмотров: 2 819 |

Собственно о «редиректах» и пойдет дальнейший разговор. Как перенаправить пользователя с одного сайта (странички) на другую? Способов редиректа достаточно много, в Сети достаточно разрозненных описаний этих способов. Ниже будут приведены самые распространенные и действенные из них.

1. Самым простым редиректом является прямая ссылка на необходимый сайт. Выглядит это примерно так:

<html>
<title>kbaott.net</title>
<head>
</head>
<body>
<center><strong><big>
Наш сайт перехал на новый адрес <a rel="nofollow" href="http://kbaott.ru">http://kbaott.ru</a>
</big></strong></center>
</body>
</html>

Файл index.html с таким содержимым будет содержать всего одну строку со ссылкой на новый адрес. Просто и… неудобно.

2. Автоматический редирект на PHP — одно из самых частовстречающихся заданий для веб-разработкчика. Для этого создаем текстовый файл, называем его например index.php и вписываем в него следующий код:

<?
$URL="http://kbaott.ru";
header ("Location: $URL");
?>
<html>
<title>kbaott.net</title>
<head></head>
<body>
</body>
</html>

Теперь если вызвать этот файл со скриптом, делается это примерно так: http://www.******.***/index.php, скрипт выполнится на сервере и вы будете автоматически перенаправлены на указанный в $URL  сайт автоматически.Здесь стоит упомянуть, что имя файлу со скриптом можно дать любое, но при этом возникает другая проблема — как показать пользователю этот файл? Есть несколько способов, но самым лучшим, как мне кажется, будет следующий: заходим на сервер в корневую папку сайта, удаляем из нее файлы типа index.php, index.htm. index.html — это файлы с которых начинается загрузка сайта, теперь наш файл со скриптом редиректа  называем  index.php и загружаем его на сервер в корневую папку сайта. Теперь этот файл будет автоматически запускать скрипт при входе на сайт. Но этот способ не всегда возможен — другие варианты должны рассматриваться предметно.

3. Следующий более продвинутый способ редиректа — с помощью java-скрипта с таймером. Для этого создаем текстовый файл, называем его например countdownRedirect.js и вписываем в него следующий код:

function countdownRedirect(url, msg)
{
   var TARG_ID = "COUNTDOWN_REDIRECT";
   var DEF_MSG = "Redirecting...";
   if( ! msg )
   {
      msg = DEF_MSG;
   }
   if( ! url )
   {
      throw new Error('You didn\'t include the "url" parameter');
   }
   var e = document.getElementById(TARG_ID);
   if( ! e )
   {
      throw new Error('"COUNTDOWN_REDIRECT" element id not found');
   }
   var cTicks = parseInt(e.innerHTML);
   var timer = setInterval(function()
   {
      if( cTicks )
      {
         e.innerHTML = --cTicks;
      }
      else
      {
         clearInterval(timer);
         document.body.innerHTML = msg;
         location = url;	 
      }
    }, 1000);
}

Это будет наш java-скрипт с редиректом.  Цифра 1000 в самом конце скрипта определяет время таймера — в данном случае это 10 секунд. Теперь поработаем над основным телом страницы:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Новый адрес моего блога теперь kbaott.net</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<style type="text/css">
a, a:active, a:visited {
color : #FFFFFF;
}
a:hover {
color : #dc0000;
}

BODY, TD, TEXTAREA, INPUT, SELECT {
   color: #FFFFFF;
   background: #000000;
   font: bold 13pt Tahoma, sans-serif;
   text-align: center;
}
span.counter {
   color: red;
   cursor: default;
   font-size: larger;
}
div.info {
   margin: 0 auto;
   text-align: left;
   font-size: smaller;
   width: 80%;
   margin-top: 2em;
}
</style>
<script src="countdownRedirect.js" type="text/javascript"></script>
</head>
<body onload='countdownRedirect("http://kbaott.ru", "Спасибо за визит!")'>
<div>Это мой старый блог.</div>
<div class="info">Мой блог переехал на новый домен и на платном хостинге, посетите его - <a rel="nofollow" href="http://kbaott.ru">kbaott.net</a><br /><br /><center>Вы автоматически перейдете на него через <span class="counter" id="COUNTDOWN_REDIRECT">10</span> секунд.</center>
</div>
</body>
</html>

Таким образом мы сообщим пользователю о том, что сайт переехал и аккуратно перенаправим его на новый адрес. Кстати говоря, скрипт (если вы не разбираетесь в java) лучше не трогать, а вот содержание html-страницы можно оформить по своему вкусу.

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

.htaccess (hypertext access) — файл дополнительной конфигурации веб-сервера Apache, а также подобных ему серверов. Позволяет задавать большое количество дополнительных параметров и разрешений для работы веб-сервера в отдельных каталогах (папках), таких как управляемый доступ к каталогам, переназначение типов файлов и т.д., без изменения главного конфигурационного файла. В общем выше дана ссылка на Википедию — там почитаете :) .

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

К примеру есть сайт www.kbaott.net Поисковики его знают, но домен kbaott.net без префикса www они считают другим доменом. В этой ситуации ссылки на данный ресурс с каталогов, других сайтов и т.д. имеют вид www.kbaott.net, а некоторые ресурсы ставят ссылку kbaott.net без www. Таким образом часть PR уходит на сайт без префикса, что не есть хорошо. С помощью 301 редиректа можно склеить домены, перенаправляя посетителей и роботов с простого сайта на сайт с www или на оборот. Теперь поисковики видят что это один и тот же домен и весь пиар будет ваш.

Для этого в файле  .htaccess в корне сайта пропишите следующие строчки:

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

Здесь идет перенаправление с сайта с префиксом на сайт без www. Вместо приведенных адресов вставьте свои. Так же можете сделать .htaccess редирект наоборот, поменяв адреса сайтов в файле местами.

5. Вот мы и дошли до перенаправления пользователя на другой домен. Для того, что бы перенаправить посетителя на другой домен используем 301 редирект в .htaccess следующим образом:

В корень домена, который будем клеить к основному помещаем .htaccess с таким синтаксисом:

Redirect Permanent / http://kbaott.ru

Да, всего одна строка — перенаправляет пользователя (или робота) на указанный адрес совершенно незаметно и мгновенно.

Итак мы с Вами разобрались в способах и механизмах редиректа. Желаю удачи. Вопросы можете задавать в комментариях.

Вместо эпилога:

Клиент: Большое спасибо, интернет работает хорошо
Саппорт: Ваша заявка принята, в течении 3-х дней исправим.

Метки: , ,
Писано 01.10.2010

Понравилась статья? Тогда получайте обновления на e-mail: