Редирект URL
🕛 25.04.2007, 18:13
В этом уроке я расскажу о трёх известных мне способах редиректа (телепортации) броузера на другой url. Также вы найдете здесь реализацию редиректа на perl, php, html и на javascript.
-Первый способ основан на спецификации протокола http. Каждый http ответ сервера содержит заголовок (header) и тело (body).
Заголовок - это набор служебных полей, который говорит броузеру как интерпретировать информацию в теле http ответа. Например, есть известное всем веб
программистам поле заголовка content-type, в это поле записывается тип передаваемых от сервера данных.
В этом уроке нам потребуется другое важное поле заголовка:
location: url
Это адрес на который должен телепортироваться броузер. При получении http заголовка с указанным location, броузер игнорирует тело http ответа и сразу
переходит на указанный url.
-Реализация на perl.
В perl'е сделать редирект очень просто.
print "location: http://webclass.ru\n\n";
Надо отследить, чтобы скрипт посылал эту строку прежде всего. Можно даже сказать, что если вы хотите перенаправить броузер на другой url, то вам следует
послать броузеру только одну строчку, которая указана выше. Обратите внимание на символы \n\n в конце строки. Это разделитель между http заголовком и телом
http ответа, и он обязательно должен быть указан.
-Реализация на php.
В php cуществует специальная функция header(), с помощью которой можно указывать поля http заголовка.
Для редиректа достаточно написать:
header("location: http://webclass.ru");
Но опять же, надо помнить, что заголовок посылается перед телом http ответа и эта строчка кода должна стоять в скрипте перед любой другой операцией вывода.
Иначе броузер получит стандартный заголовок, сформированный сервером, и ваша строчка будет интерпретироваться как просто текстовые данные.
-Второй способ редиректа основан на возможностях html кода. Есть meta тэг, специально предназначенный для перенаправления.
Использование:
<meta http-equiv="refresh" content="0; url=http://webclass.ru">
Здесь в поле content даже можно указать количество секунд, перед тем как броузер перейдет на указанный url. Тэг должен использоваться в разделе head.
Вот пример html страницы, для перенаправления:
<html> <head> <meta http-equiv="refresh" content="0; url=http://webclass.ru"> </head> <body> <h1>redirect page</h1> </body> </html>
-Третий способ перенаправления основан на использовании javascript. Я советую использовать этот способ тогда, когда нет других возможностей. Из всех описанных
здесь методов этот самый ненадежный (можно всегда отключить javascript в броузере).
window.location=http://webclass.ru;
Пример:
Код этой формы:
<form><input onclick=window.location="http://webclass.ru" type=button value=redirect></form>