Редирект. Примеры переадресации сайтов

Ключевые слова: редирект, переадресация, redirect

Полезная статья? — можете поделиться ссылкой или оставить комментарий

    * Ссылка для сайта или блога
    * Ссылка для форума

Ссылка на статью для размещения на сайте или блоге:
<a href="http://soft.ipbb.ru">Редирект. Примеры переадресации сайтов</a>
Выделите текст и нажмите на Ctrl+C, чтобы скопировать выделенный текст
Ссылка на статью для размещения на форуме:
Редирект. Примеры переадресации сайтов
Выделите текст и нажмите на Ctrl+C, чтобы скопировать выделенный текст

При разработке разнообразных по сложности сайтов рано или поздно требуется применение редиректов. Например, для обновления страницы чата или онлайн-трансляции, для перенаправления на правильный адрес в случае «переезда» страницы и т. п. Правильное использование редиректов или обновления страниц может сделать работу сайта более эффективной и удобной для пользователей. Попробуем перечислить основные приёмы реализации редиректа на сайте.

Содержание статьи:

    * Когда полезно применять редирект
    * Примеры исполнения
    * Комментарии

Редирект (от англ. redirect) — переориентация, перенаправление пользователя на другую страницу сайта. Обычно под редиректом подразумевается автоматическая переадресация, без участия пользователя. Редиректом могут называть программное решение (скрипт), которое принудительно перенаправляет пользователя с посещаемой страницы на другую.

Редирект может применяться не только во благо пользователей, но и без их ведома, например, в случаях использования редиректов на сайтах «дорвеях» или для автоматической «накрутки» счетчика посещений сайта.
Когда полезно применять редирект (↑)

    * При переносе сайта на новый домен. Посетителей сайта по старому адресу, желательно, автоматически перенаправлять на другой домен;
    * При перемещении страниц или разделов сайта. Редирект применяется для переадресации пользователей на новый, правильный адрес страницы или раздела. Очень важно для сохранения целостности сайта и доступности информации;
    * Для периодического обновления страницы. Обновление страницы, своего рода частный случай редиректа страницы на саму себя, но с задержкой по времени! Полезная возможность на сайтах с текстовыми онлай-трансляциями, чатах.
    * При продвижении сайта. Редирект может применяться, например, для ускорения «склейки» адресов страниц сайта с префиксом www и без него;

    На заметку! Аккуратное и правильное использование 301-го редиректа старых страниц на новые или старого сайта на новый адрес, позволяет сохранить позиции сайта в поисковых системах. Использование 301-го редиректа передаёт PageRank страницы на новый адрес.

Примеры исполнения (↑)

В зависимости от поставленной задачи и возможностей разработчика для выполнения редиректа может применяться:

    * «JavaScript» (выполняется на стороне клиента, браузера);
    * мета-тег «Refresh» (выполняется на стороне клиента);
    * скрипт, например, на языке «PHP» (выполняется на стороне сервера);
    * директивы mod_rewrite в файле .htaccess (выполняется на стороне сервера).

Как видно из способов реализации, команда на редирект может поступать со стороны браузера (в случае использования яваскриптов или мета-тегов) или от сервера (в случае отправки браузеру специального ответа, содержащего заголовок «Location»). Остановимся подробнее на каждом из способов.
Редирект с помощью «JavaScript»

«Приказать» браузеру сделать переход на другую страницу можно средствами языка программирования javascript.
Команды javascript для выполнения редиректа (redirect):

   1. location="http://soft.ipbb.ru";
   2. document.location.href="http://soft.ipbb.ru";
   3. window.location.reload("http://soft.ipbb.ru");
   4. document.location.replace("http://soft.ipbb.ru");
   5. setTimeout('document.forms["searchform"].Submit.click()', 100);
      — эмуляция клика по кнопке отправки формы. Подобный приём редиректа частенько используют строители дорвеев.

    На заметку! Метод reload() полностью моделирует поведение браузера при нажатии на кнопку «Reload» в панели инструментов. А метод replace() позволяет заместить текущую страницу на другую страницу. При этом посетитель не сможет вернуться на предыдущую страницу с помощью кнопки браузера «Back», так как запись в history о старой странице полностью замещается новой.

В момент выполнения одной из перечисленных выше команд javascript, сразу же произойдёт загрузка новой страницы. Но чаще необходимо делать редирект с задержкой. В javascript для исполнения кода с задержкой Вы можете использовать функцию setTimeout() или setInterval().
Mета-тег «Refresh»

Мета-тег редиректа необходимо использовать в заголовке html страницы, между тегами <head></head>. Подобный мета-тег часто используют на страницах, которые требуют постоянного периодического обновления. Например, на сайтах с онлайн-трансляциями матчей и т. п. событий.

Пример мета-тега для обновления страницы с задержкой по времени:

<meta http-equiv="refresh" content="0; url= http://soft.ipbb.ru" />,

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

Особое внимание следует уделить редиректам, поступающим со стороны сервера. Важно понимать, что редирект бывает временным (статус 302) и перманентным (статус 301, страница перемещена навсегда).

Чтобы браузер выполнил команду редиректа, сервер должен прислать в заголовке, например, следующий ответ:

HTTP/1.1 301 Moved Permanently
Location: http://soft.ipbb.ru

Подобный ответ сервера, сообщает браузеру посетителя, что запрашиваемая страница навсегда перенесена и доступна по новому адресу (разумеется, домен wwwvashmaster.ru в примере мы указали в качестве наглядности).
Как сделать редирект на PHP

Как мы уже заметили ранее, для выполнения редиректа скрипт на сервере должен отправить в браузер посетителя специальный заголовок. В языке программирования PHP отправку заголовков с редиректом можно сделать с помощью функции header().

Пример готового кода PHP:

<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://soft.ipbb.ru/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
Делаем редирект средствами .htaccess

Директивы, прописанные в файле .htaccess обрабатываются сервером «Apache». Приведём несколько рабочих примеров переадресации:

   1. Redirect 301 / http://soft.ipbb.ru/
   2. RedirectPermanent / http://soft.ipbb.ru/
   3. Redirect 302 / http://soft.ipbb.ru/

Более сложные решения, но очень полезные, можно использовать при подключенном модуле «Apache» — mod_rewrite. Команды для модуля mod_rewrite прописываются в файле .htaccess.

Пример содержимого файла .htaccess с использованием mod_rewrite:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)  [R=301,L]

Если этот файл .htaccess разместить на другом домене, то любые запросы будут автоматически перенаправляться 301-м редиректом на сайт soft.ipbb.ru . Адрес посещённой страницы будет сохранён. Подобный редирект можно использовать с купленных «пиаристых» доменов, например, для передачи PR своему основному сайту.

    На заметку! 301-й редирект называют безопасным! Данный редирект сообщает, что страница навсегда перенесена на новый адрес. Этот факт хорошо определяется поисковыми системами и практически все поисковые параметры старой страницы передаются новой. Например, такие факторы как ссылочное, PR и т. п. При 301-м редиректе страница на новом адресе как правило не теряет свои позиции в поисковых системах, что делает подобные переносы страниц и разделов сайта незаметными для посетителей и без ущерба трафику из поисковых систем.

Приведём пример файла .htaccess с 301-м редиректом, который часто используется в случае переноса или переименования директории раздела сайта:

Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^articles(/?)(.+)?$  [R=301,L]

Данные директивы mod_rewrite сообщают браузеру посетителя, что старая страница, например, по адресу http://soft.ipbb.ru/viewtopic.php?id=6 навсегда перенесена и доступна на нашем сайте по новому адресу http://soft.ipbb.ru/viewtopic.php?id=12

В заключение, приведём файл .htaccess c универсальным редиректом с домена с www на домен без www:

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

Пожалуй, на этом остановим наш рассказ. Нам удалось в одной статье перечислить основные приёмы организации редиректов, от использования javascript до отправки необходимых заголовков прямо из скриптов на сервере. Надеемся, не зря!

Простой пример на php

редирект
<script>
function follow_page()
{
window.location.href='http://soft.ipbb.ru'
}
setTimeout('follow_page()',5000)
</script>

Кто знает другой делитесь.

Админ  soft.ipbb.ru