Основные понятия: протокол HTTP, кода ответа, перенаправление
Протокол HTTP, или Hypertext Transfer Protocol (протокол передачи гипертекста), - это основной протокол прикладного уровня, с помощью которого осуществляется всем привычный серфинг по Сети с помощью браузера. Характерной особенностью этого протокола является отсутствие данных о предыдущем состоянии между разными запросами клиента, выполненными с его помощью. На каждый запрос клиентского приложения (частным случаем которого является браузер) сервер, которому он был адресован, генерирует некоторый ответ. В начале каждого ответа находится один из предопределенных кодов, или статусов, ответа протокола HTTP, затем идут заголовки и может присутствовать тело ответа.
В рамках данной статьи будут рассмотрены только коды ответа для перенаправлений. Итак, для редиректов выделена группа кодов от 300 до 399. В предыдущей версии спецификации протокола HTTP было предусмотрено максимальное количество перенаправлений равное 5, поэтому при использовании редиректов нужно иметь в виду данное ограничение, которое до сих пор может быть реализовано в устаревших приложениях.
Само понятие перенаправления предполагает, что при получении кода ответа 3xx клиентское приложение, в частности браузер, самостоятельно или с помощью пользователя принимает решение о том, что нужно делать дальше.
Виды перенаправлений
На текущий момент существует 9 видов редиректов:
- 300 Multiple Choices
- 301 Moved Permanently
- 302 Found
- 303 See Other
- 304 Not Modified
- 305 Use Proxy
- 306 Reserved
- 307 Temporary Redirect
- 308 Permanent Redirect
Далее подробно рассмотрим все эти виды и случаи, когда их нужно использовать.
Множественный выбор, Multiple Choices, HTTP-код 300
Используется когда один и тот же ресурс в Сети имеет несколько представлений, у каждого из которых есть свое расположение, для различных клиентов. Например, для пользователей, зашедших на сайт со стационарного ПК или ноутбука, будет показана обычная версия сайта, а для пользователей мобильных устройств отобразится облегченная версия сайта, которая учитывает особенности аппаратного обеспечения этих устройств. Пример несколько надуманный, т.к. для реализации подобного поведения ранее просто использовались другие протоколы передачи данных (например, WML), а сейчас используется адаптивная верстка.
Перемещено постоянно, Moved Permanently, HTTP-код 301
Это самый распространенный вид редиректа, с которым сталкивается каждый веб-мастер. Он сообщает клиентскому приложению, что запрашиваемый ресурс был перемещен и теперь находится по другому адресу. В чем же важность этого перенаправления? Рассмотрим примеры, когда не обойтись без 301-го редиректа.
- Публикация на сайте переносится в другой раздел или переименовывается, и ее адрес автоматически изменяется программой управления сайтом. В данном случае использование 301-го перенаправления позволит обновить индекс поисковых систем и не потерять позиции, завоеванные с помощью поисковой оптимизации.
- Сайт переносится на новый домен. В этом случае до тех пор, пока есть контроль над старым доменом, нужно установить на нем перенаправление на новый домен, чтобы не потерять позиции в поисковых системах и посетителей/клиентов, которые запомнили адрес (например, в своих закладках) и заходят по прямой ссылке.
- Слияние сайтов, резервирование для сайта схожего по написанию домена или же имени домена в другой доменной зоне. Резервирование может быть полезно, если мы хотим обезопасить себя от возможных сайтов-конкурентов с созвучным названием. При слиянии сайтов не стоит отказываться от ставшего ненужным домена, т.к. данная экономия может привести к большим потерям трафика или же облегчить выход в ту же нишу конкурента с использованием вашего старого доменного имени, которое успело набрать некоторый вес для поисковиков из-за всего возраста.
Найдено, Found, HTTP-код 302
Рапортует о том, что запрошенный ресурс временно располагается по другому адресу и может быть передан клиенту. Используется в работе современных веб-серверов, сервисов укорачивания ссылок (сокращение URL).
Смотрите другие источники, See Other, HTTP-код 303
Появился в версии протокола HTTP 1.1. Во многом схож с кодом 302. Используется для более корректного перенаправления, если клиентское приложение использует для запроса метод POST (например, при отправке форм в браузере). При этом предложенный вместо запрошенного адрес ресурса является временным и не должен быть запомнен вызывающим приложением.
Не изменено, Not Modified, HTTP-код 304
Сообщает клиенту, что запрашиваемый ресурс не был изменен с момента времени, указанного в специальном заголовке запроса If-Modified-Since или If-Match. Активно используется в работе браузеров, когда на сервере включено кеширование содержимого сайта. Если запрашиваемая страница или другой ресурс (картинка, сценарий, стили оформления страницы) не были изменены, то браузер при получении кода ответа 304 не производит загрузку с сервера, а рассчитывает на свой локальный кеш. Это экономит пропускную способность канала клиента и сервера и приводит к ускорению загрузки содержимого. Например, при правильно настроенном кэшировании страница сайта, которую мы недавно посетили, будет грузиться на порядок быстрее, чем та, которую мы еще не смотрели.
Используйте прокси, Use Proxy, HTTP-код 305
Появился в версии протокола HTTP 1.1. Предписывает использовать для доступа к ресурсу прокси-сервер (промежуточный сервер), данные которого передаются в заголовке ответа Location. От пользователя в таком случае ничего не требуется делать, т.к. всю работу должна автоматически выполнить клиентская программа.
Переключите прокси-сервер, Switch Proxy, HTTP-код 306
Данный код использовался в предыдущей версии спецификации протокола. В настоящий момент код 306 не несет никакой смысловой нагрузки. Тем не менее, он остается зарезервирован.
Временное перенаправление, Temporary Redirect, HTTP-код 307
Появился в версии протокола HTTP 1.1 вместе с кодом 303 для разрешения коллизий с временным перенаправлением, которые существовали в предыдущей версии протокола HTTP при наличии только 302-го кода. При перенаправлении метод запроса не может быть изменен с POST на GET.
Постоянное перенаправление, Permanent Redirect, HTTP-код 308
Пока находится в стадии черновика. Является аналогом кода 301 за исключением того, что при перенаправлении метод запроса не может быть изменен с POST на GET. Использование кода 308 позволяет улучшить перенаправление запросов из HTML- форм по методу POST к ресурсам, которые поменяли свой адрес на постоянной основе. Он дополняет набор кодов 301, 302, 307 для выполнения постоянных и временных перенаправлений.
В качестве заключения
При работе над сайтом веб-мастер должен хорошо понимать, когда и как устанавливать 301-редирект. Другие значимые статусы ответа используются исключительно веб-программистами или же программистами, которые работают над серверным программным обеспечением. Коды от 309 до 399 в настоящий момент не используются, но могут быть задействованы в будущем.
Читайте также:
- Реестр кодов ответа в протоколе HTTP
- Спецификация протокола HTTP версии 1.1 - RFC 2616
- Краткое описание HTTP-кодов ответа
- Черновик спецификации по HTTP Status Code 308
- Google Analytics. Начало работы
- Баннерная реклама в интернете: путеводитель для начинающих
- Виды хостинга. Выбор хостинг-провайдера для сайта
- Как добавить сайт в Google News
- Как правильно выбрать доменное имя для сайта
- Как создать сайт на WordPress
- Контекстная реклама в Google AdWords для начинающих
- Обзор бирж покупки-продажи веб-сайтов
- Обзор популярных систем управления интернет-рекламой
- Обзор самых популярных ошибок на сайте и секреты управления ими
- Обзор баннерных сетей
- Работа с Google AdSense: регистрация и заработок