Редирект

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

В принципе, достаточно задать поиск в любой системе по слову «редирект», чтобы получить вагон рецептов. Но большое количество ответов в некотором смысле и минус: тяжело найти способ, который подходит именно тебе. Так что я перечислю несколько способов, которые проверял на себе.

 
1. Самый простой и давний способ, который мне известен, использование авто обновления страницы через Мета-тэги. В этом случае, вы ставите в заголовок страницы (между <head> и </head> ) такой тэг:

<meta http-equiv="Refresh" content="1;URL="http://www.comicart.ru/">

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

Вообще-то тэг был предназначен для тех случаев, когда вам нужно с некоторой периодичностью перезагружать страницу, чтобы своевременно узнать о возможных изменениях. Сейчас эта функция не очень актуальна. Перезагружать страницу полностью нет необходимости. Если вы пользовались почтой от googl'а, замечали, что он получает информацию о поступлении новых писем без видимых обновлений страницы.

Для редиректа этот метод тоже использовать не рекомендуют. Есть несколько причин. В первую очередь, при таком способе перенаправления у посетителя могут возникнуть заметные проблемы с возвратом к предыдущей странице. Нажав кнопочку «Назад» они попадут на страницу, с которой были перенаправлены и тут же будут перенаправлены снова. Это вызывает заметный дискомфорт, если человеку необходимо вернуться на сайт, где он был до вас.

Второй причиной против Refresh'а является то, что якобы такое перенаправление не очень любят поисковые системы. На сколько это верно не знаю, но вполне может быть. Дело тут скорее всего в том, что переход от одной страницы к другой происходит не как результат действия пользователя, а автоматически. Так что сложно оценить, как учитывать авторитетность сайта и значимость этого перехода.

Другая версия, однако, говорит, что поисковые машины вполне спокойно реагируют на refresh, просто игнорируя страницу-источник перехода в таком случае.

 
2. Второй простой способ — использование сценария JavaScript. В этом случае нужно где-то в теле документа, можно сразу после открывающего тэга <body>, вставить скрипт

<script language="javascript" type="text/javascript">
document.location="http://www.comicart.ru/";
</script>

Тут вы явным образом указываете документу перейти на указанный адрес, что и будет сделано, если браузер поддерживает JavaScript и в его установках не запрещены переходы страниц.

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

 
Чем хороши перечисленные два способа — тем, что они не требуют никаких серверных технологий. Если, скажем, ваш сайт находился на бесплатном хостинге (вроде narod'а), а потом доросли до покупки нормального хостинга. Как перенаправить посетителей на новый сайт? Можно повесить на старой версии объявление о переезде и надеяться, что пользователи заметят. Автоматически же перенаправлять удастся (из известных мне) только одним из указанных двух способов. Приходится мириться с их недостатками.

 
3. Если же вы все-таки имеете доступ к серверу и его возможностям, то ассортимент доступных способов редиректа сильно возрастает. Я использовал один из способов перенаправления с использованием php. А именно, я создал файл index.php все содержание которого приведено ниже:

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

Тут получается так называемый редирект 301: мгновенное перенаправление на другой адрес. В идеале, это нам и было нужно. И поисковые машины такой способ должны любить больше, поскольку по сути нет исходной страницы перехода и нет ее содержимого. Значит и учитывать это содержимое не нужно. Мы просто сразу оказываемся там, куда нас направили.

 
4. Четвертый способ, который я хочу описать, решает по сути немного другую задачу. Тут задача была перенаправить пользователя на другой сайт, а подменить содержимое корня сайта, содержимым некоторой его подпапки. Можно сказать, подменить корневую папку.

Если конкретнее, я поставил WordPress не в корневую директорию htdocs, а в папку htdocs/wp_sub_dir. Когда WordPress был готов к работе, получилось, что корень сайта теперь находится в http://www.comicart.ru/wp_sub_dir/ вместо http://www.comicart.ru/. Это можно было решить разными способами. Например, настроить редирект, как описано выше. Но тогда посетитель всегда видел бы этот «wp_sub_dir», который не несет никакой полезной нагрузки.

Тогда я нашел другое решение. В файл .htaccess в корневой директории сайта был добавлен следующий код:

RewriteEngine On
RewriteRule ^wp_sub_dir/ - [last]
RewriteCond %{HTTP_HOST} (www.)?comicart.ru [nocase]
RewriteRule (.*) wp_sub_dir/$1 [last]

Это работает. Заходя на сайт теперь, посетители не подозревают, что все доступные им файлы лежат не в корне, а какой-то там другой папке.

Позже этот код пригодился мне еще раз, когда потребовалось заменить движок форума. Старый форум был поставлен в корневую директорию поддомена forum.comicart.ru, а новый в поддиректории, скажем, new_forum. Когда импорт данных со старого форума был закончен, появилсь та же проблема: forum.comicart.ru/new_forum выглядит не очень красиво. Добавление четырех строчек в .htaccess исправило положение.

Вероятно тот же код пригодится мне и в будущем.

С помощью правильных директив в файле .htaccess можно добиться и других видов перенаправления, но ими я не пользовался. На всякий случай не буду пытаться пересказывать своими словами чужие инструкции. О них можно почитать, в частности по ссылке в следующем абзаце.

 
Предпоследний способ я позаимствовал из вот этой статьи. Там перечислено много способов и без лишних слов. Если вы не нашли подходящего рецепта выше, поищите там.