Всё больше знакомых спрашивает меня что такое редирект (redirect) и для чего он нужен. Это и послужило поводом для написания данной статьи. Надеюсь, она поможет начинающим Web-программистам разобраться в тонкостях работы с ними и немного освежит память уже знающим людям.


Зачем нужен редирект и для чего его используют.

Редирект используют для перенаправления посетителей сайта с одной страницы на другую. В каких случаях и для чего это может понадобиться? Вариантов может быть довольно много: например, причиной для использования редиректа может послужить смена доменного имени сайта. Предположим, у Вас был некий сайт http://site.com/ с хорошей посещаемостью. В силу сложившихся обстоятельств, Вам пришлось сменить этот старый домен на http://mysite.com/. Некоторые могут воскликнуть: "Зачем использовать редирект? А как же паркинг домена (Parked Domains)? К чему такие трудности - зашел в cpanel и добавил новый домен, делов-то!" Так вот, на самом деле, отличия есть. Конечно, и в первом, и во втором случае человек увидит нужный для него сайт. Разница лишь в том, что при паркинге под доменами http://site.com/ и http://mysite.com/ понимается один и тот же сайт, а при редиректе произойдет перебрасывание со сменой URL в адресной строке веб-браузера.

Редирект также используют для перенаправления с http://www.site.com/ на http://site.com/ или наоборот - это уж как кому захочется.

Ещё возможен вариант, когда редирект применяется для добавления в конце ссылки слэша - косой черты "/". Например, http://site.com/news редиректят на http://site.com/news/.

Кроме того, многие любители подзаработать используют редирект для т.н. "склейки" доменов. Фальшиво получают хороший PR (PageRank) и ТИЦ (тематический индекс цитирования), а потом пытаются продать домен за деньги. И среди массы Интернет-любителей и начинающих Web-дизайнеров обязательно найдется тот, кто его купит.


Статус-коды редиректов:

"300" Multiple Choices (несколько вариантов на выбор)
"301" Moved Permanently (перемещено навсегда)
"302" Temporary Redirect (временный редирект)
"303" See Other (затребованный ресурс можно найти по др. адресу)
"304" Not Modified (содержимое не изменялось - это могут быть рисунки, таблицы стилей и т.п.)
"305" Use Proxy (доступ должен осуществляться через прокси)
"306" (Unused) (не используется)

Давайте рассмотрим подробнее как работает редирект "301". Пользователь открывает браузер и в адресной строке вводит ссылку http://site.com/index.php. Нажимает кнопочку Ввод (Enter). В это время браузер формирует HTTP-запрос и отправляет его серверу, который, в свою очередь, возвращает HTTP-ответ. Если у нас установлен редирект "301", то в поле "Location" будет указан новый адрес страницы - http://site.com/news.php, куда нас, собственно, и перенаправят:


picts_1


Теория - это хорошо, но она должна подкрепляться практикой. Поэтому наша задача - сообщить, что страница перемещена, и затем перебросить посетителя на другую.


Пример кода на PHP

Создаем файл index.php:

<?php
Header( "HTTP/1.1 301 Moved Permanently" );
Header( "Location: news.php" );
exit();
?>

Простой редирект через .htaccess или httpd.conf

Redirect 301 /index.php /news.php
или
Redirect permanent /index.php /news.php

Редирект через .htaccess с использованием mod_rewrite

Этот метод работает в Apache c включенным mod_rewrite - модулем, который позволяет осуществлять ряд полезных функций. Например, преобразование ссылок вида http://site.com/index.php?module=news в более удобную и интуитивно понятную форму для обычного человека: http://site.com/news/. Благодаря ему, мы можем конфигурировать редирект под конкретно взятую ситуацию. Подробнее о возможностях mod_rewrite Вы можете прочитать здесь.

RewriteEngine on
RewriteBase/
GET /index.html HTTP/1.1
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://daxa.com.ua/news.php [R=301,L]

RewriteEngine on - включает механизм преобразования.
RewriteBase - простыми словами можно сформулировать так: RewriteBase указывает директорию преобразования. У нас это корневой каталог.
RewriteCond - в этой директиве мы указывает условие, в случае выполнения которого переходим к RewriteRule.
{THE_REQUEST} - строка HTTP-запроса
RewriteRule - задает правило преобразования URL. Здесь используются регулярные выражения.
[R=301,L] - флаг R указывает на редирект "301", L - останавливает процесс преобразования.

Помните, что редирект делают не только для посетителей Web-сайта, а и для поисковых роботов, от которых зависит рейтинг Вашего Интернет-портала в поисковых системах.


Автор статьи: Алексей Авраменко (aka Swat2)



Rambler's Top100

0.00226998329163