Способы переадресации в веб
Авг 142018Существует много способов переадресации в веб-приложениях, разберём наиболее популярные и удобные из них. Далее будут приводиться примеры с наглядными ссылками на различные способы переадресации.
PHP
Есть плюсы и минусы переадресации с помощью php, один из минусов заключается в повышении нагрузки на сервер, т. к. пыхыпы исполняется непосредственно сервером.
Все возможности переадрисации на php производятся через header();, она применяется для отправки заголовка http. Именно эта функция служит для перенаправления страниц и сайтов.
Существует два типа аргумента функции. Первый предназначен для отправки кода состояния соединения. Он начинается с "HTTP/". Другой тип вместе с заголовком передает клиентскому браузеру код состояния (REDIRECT 302). Этот аргумент начинается с "Location:
<?php
header('Location: /page/links/');
?>
Так же можно принудительно передать код состояния http 301, который будет передавать информацию серверу о том, что объект перемещён постоянно. В примере выше по умолчанию передаётся заголовок "перемещён временно", код состояния в том случае будет 302:
<?php
header('Location: /page/links/',true, 301);
?>
Кроме того есть способ записать по другому передачу кода состояния и перенаправления по новому адресу:
<?php
header('HTTP/1.1 301 Moved Permanently');
header('Location: /page/links/');
?>
Способ перенаправления через заданное время передаётся так же через header(), с атрибутом Refresh, задающим время переадресации в секундах:
<?php
header('Refresh: 7; url=/page/links/');
echo "Через 7 секунд вас переадресует на другую страничку";
?>
Пример переадресации через заданное время
JS
При использовании редиректов на js есть большой плюс того, что они исполняются именно клиентом, а не сервером, что значительно снижает нагрузку на машину. Скорость такой переадресации зависит лишь от мощности устройства, которое использует пользователь.
Есть несколько методов перенаправления на js. Самый простой - использование location, свойство которого отправляет страницу на новый адрес. location.replace же заменяет текущую страницу на новую. location.reload перезагружает ресурс из текущего URL на новый. Метод location.assign запускает загрузку и отображение нового документа по указанному URL.
<script>
location="/page/links/";
document.location.href="/page/links/";
location.replace("/page/links/");
window.location.reload("/page/links/");
document.location.replace("/page/links/");
window.location.assign('/page/links/')
</script>
Можно так же использовать переадресацию через jQuery, подменив location.href, или поменяв некоторые атрибуты вашей странички. Но тогда вам потребуется предварительно подключить фреймворк jQuery к вашей страничке.
<script src="/themes/echo/js/jquery.js"></script>
<script>
$(location).attr('href','/page/links/')
$(window).attr('location','/page/links/')
$(location).prop('href', '/page/links/')
</script>
Пример переадресации на jQuery
Есть ещё метод использования истории вашего браузера (переадресация на предыдущую страницу):
<script>
window.history.back()
window.history.go(-1)
</script>
Пример с использованием истории браузера
Редирект на js с задержкой времени выглядит следующим образом:
<script>
setTimeout ('window.location = "/page/links/"', 7000);
</script>
Через 7 секунд вас перебросит на заданную страничку links
Пример переадресации на js с задержкой
HTML
Самый простой способ переадресации на html - использование мета-тегов:
<head>
<meta http-equiv="refresh" content="7;URL=/page/links/" />
</head>
Через 7 секунд вас переадресует на страничку links
Пример с мета-тегами переадресации
И напоследок я приведу пример псевдо-переадресации через iframe. В данном способе происходит не редирект, а открытие другой странички внутри первой (окно в окне).
<frameset cols="100%">
<frame src="/page/links/">
<noframes>Этот браузер не поддерживает фреймы</noframes>
</frameset>
Пример с использованием фреймов