Сайтостроение
Редирект - Примеры переадресации сайтов
При разработке разнообразных по сложности сайтов рано или поздно требуется применение редиректов. Например, для обновления страницы чата или онлайн-трансляции, для перенаправления на правильный адрес в случае «переезда» страницы и т. п.
Правильное использование редиректов или обновления страниц может сделать работу сайта более эффективной и удобной для пользователей. Попробуем перечислить основные приёмы реализации редиректа на сайте.
Редирект (от англ. redirect) — переориентация, перенаправление пользователя на другую страницу сайта. Обычно под редиректом подразумевается автоматическая переадресация, без участия пользователя. Редиректом могут называть программное решение (скрипт), которое принудительно перенаправляет пользователя с посещаемой страницы на другую.
Редирект может применяться не только во благо пользователей, но и без их ведома, например, в случаях использования редиректов на сайтах «дорвеях» или для автоматической «накрутки» счетчика посещений сайта.
Когда полезно применять редирект
- При переносе сайта на новый домен. Посетителей сайта по старому адресу, желательно, автоматически перенаправлять на другой домен;
- При перемещении страниц или разделов сайта. Редирект применяется для переадресации пользователей на новый, правильный адрес страницы или раздела. Очень важно для сохранения целостности сайта и доступности информации;
- Для периодического обновления страницы. Обновление страницы, своего рода частный случай редиректа страницы на саму себя, но с задержкой по времени! Полезная возможность на сайтах с текстовыми онлай-трансляциями, чатах.
- При продвижении сайта. Редирект может применяться, например, для ускорения «склейки» адресов страниц сайта с префиксом www и без него;
На заметку! Аккуратное и правильное использование 301-го редиректа старых страниц на новые или старого сайта на новый адрес, позволяет сохранить позиции сайта в поисковых системах. Использование 301-го редиректа передаёт PageRank страницы на новый адрес.
Примеры исполнения
В зависимости от поставленной задачи и возможностей разработчика для выполнения редиректа может применяться:
- «JavaScript» (выполняется на стороне клиента, браузера);
- мета-тег «Refresh» (выполняется на стороне клиента);
- скрипт, например, на языке «PHP» (выполняется на стороне сервера);
- директивы mod_rewrite в файле .htaccess (выполняется на стороне сервера).
Как видно из способов реализации, команда на редирект может поступать со стороны браузера (в случае использования яваскриптов или мета-тегов) или от сервера (в случае отправки браузеру специального ответа, содержащего заголовок «Location»). Остановимся подробнее на каждом из способов.
Редирект с помощью «JavaScript»
«Приказать» браузеру сделать переход на другую страницу можно средствами языка программирования javascript.
location="http://www.example.com";
document.location.href="http://www.example.com";
window.location.reload("http://www.example.com");
document.location.replace("http://www.example.com");
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://www.example.com" />
,
где 0 — значение задержки в секундах, по истечении которой необходимо сделать переадресацию пользователя на новый адрес url.
Особое внимание следует уделить редиректам, поступающим со стороны сервера. Важно понимать, что редирект бывает временным (статус 302) и перманентным (статус 301, страница перемещена навсегда).
Чтобы браузер выполнил команду редиректа, сервер должен прислать в заголовке, например, следующий ответ:
HTTP/1.1 301 Moved Permanently
Location: http://www.example.com
Подобный ответ сервера, сообщает браузеру посетителя, что запрашиваемая страница навсегда перенесена и доступна по новому адресу (разумеется, домен www.vashmaster.ru в примере мы указали в качестве наглядности).
Как сделать редирект на PHP
Как мы уже заметили ранее, для выполнения редиректа скрипт на сервере должен отправить в браузер посетителя специальный заголовок. В языке программирования PHP отправку заголовков с редиректом можно сделать с помощью функции header().
Пример готового кода PHP:
<?php
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.example.com/"); /* Redirect browser */
/* Make sure that code below does not get executed when we redirect. */
exit;
?>
Делаем редирект средствами .htaccess
Директивы, прописанные в файле .htaccess обрабатываются сервером «Apache». Приведём несколько рабочих примеров переадресации:
Redirect 301 / http://www.example.com/
RedirectPermanent / http://www.example.com/
Redirect 302 / http://www.
example.com
/
Более сложные решения, но очень полезные, можно использовать при подключенном модуле «Apache» — mod_rewrite. Команды для модуля mod_rewrite прописываются в файле .htaccess.
Пример содержимого файла .htaccess с использованием mod_rewrite:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
Если этот файл .htaccess разместить на другом домене, то любые запросы будут автоматически перенаправляться 301-м редиректом на сайт www.example.com. Адрес посещённой страницы будет сохранён. Подобный редирект можно использовать с купленных «пиаристых» доменов, например, для передачи PR своему основному сайту.
На заметку! 301-й редирект называют безопасным! Данный редирект сообщает, что страница навсегда перенесена на новый адрес. Этот факт хорошо определяется поисковыми системами и практически все поисковые параметры старой страницы передаются новой. Например, такие факторы как ссылочное, PR и т. п. При 301-м редиректе страница на новом адресе как правило не теряет свои позиции в поисковых системах, что делает подобные переносы страниц и разделов сайта незаметными для посетителей и без ущерба трафику из поисковых систем.
Приведём пример файла .htaccess с 301-м редиректом, который часто используется в случае переноса или переименования директории раздела сайта:
Options +FollowSymLinks
RewriteEngine on
RewriteBase /
RewriteRule ^articles(/?)(.+)?$ http://example.com/news/$2 [R=301,L]
Данные директивы mod_rewrite сообщают браузеру посетителя, что старая страница, например, по адресу http://example.com/articles/article-1.html навсегда перенесена и доступна на нашем сайте по новому адресу http://example.com/news/article-1.html.
Иногда возникает необходимость переправить трафик с тестового поддомена на основной домен
Данный способ работает с Apache и .htaccess.
И так, как же сделать перенаправление с поддомена на основной домен c помощью .htaccess?
В общем случае всё выглядит так:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^test.example.com$ [NC]
RewriteRule ^(.*)$ http://example.com%{REQUEST_URI} [R=301,NC,L,QSA]
В заключение, приведём файл .htaccess c универсальным редиректом с домена с www на домен без www:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.([^.]+\.ru)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
Пожалуй, на этом остановим наш рассказ. Нам удалось в одной статье перечислить основные приёмы организации редиректов, от использования javascript до отправки необходимых заголовков прямо из скриптов на сервере. Надеемся, не зря!
Делайте удобные и эффективные сайты!
Автор: «Ваш МАСТЕР»