Все что нужно знать о кодах ответа 3хх

Все прекрасно знакомы с кодами ответа 301 и 302 — это HTTP коды перенаправления. На самом деле они далеко не единственные и существует еще несколько различных типов редиректов, многие из которых мы, как SEO-специалисты, не используем. Хотя иногда, сканируя сайт, можно увидеть, что некоторые страницы отдают код ответа 307. И вот вопрос — что с ними делать? Нужны ли они нам вообще?

Собственно, сначала нужно разобраться в теории — для чего созданы различные типы редиректов и когда они используются.

Напомним, что переадресация URL (редирект) — это функция сервера, которая отправляет клиента и поисковую систему с одного URL-адреса на другой. Чаще всего редиректы автоматические и классифицируются с помощью кодов ответа, определенных в протоколе HTTP.

Какие бывают коды редиректов:

 

Забегая наперед: в статье будут использоваться термины GET, POST, HEAD запросы. Поэтому тем, кто, прочитав это, напрягся и начал чувствовать себя неуверенно — посмотрите справку в конце этой статьи.

 

HTTP 300 — Multiple Choice (Множественный выбор)

300 код ответа возвращается, когда запрашиваемый ресурс (страница) имеет более одного «пункта назначения» со своим уникальным идентификатором. То есть предоставляется информация об альтернативах, чтобы пользователь (или браузер) мог выбрать предпочтительный конечный ресурс, перенаправив свой запрос на один или несколько из этих идентификаторов.

Обычно разрешается максимум 5 адресов. Браузер может сделать выбор из этого списка автоматически, если он понимает предоставленный тип носителя.

Когда дают право выбрать

 

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

Когда используют

Используют, чтобы браузер или пользователь имели право выбирать наиболее подходящую страницу для своих потребностей. К примеру, так можно представить опции разных форматов файла, несколько языковых версий. В целом, это довольно редкое явление и имеет мало общего с вашим SEO.

 

HTTP 301 – Moved Permanently (Навсегда перемещен)

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

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

301 редирект может быть задан в файле htaccess, index.php или httpd.conf на сервере или в системе управления контентом. Например, есть несколько плагинов WordPress для управления 301 редиректами.

При изменении структуры URL-адресов на сайте очень важно настроить 301 редирект для каждого нового адреса. Невыполнение этого требования приведет к снижению доверия к сайту поисковой системы и пользователей.

Когда используют

Часто используют 301 редирект, чтобы устранить дубли страниц, перенаправить робота и пользователя с неактуальной страницы или имеющей код ответа сервера 404. Редиректы с кодом ответа 301 настраивают, когда меняется структура URL-адреса после обновления дизайна или переезда; при настройке главного зеркала сайта.

Как настроить

Все способы настройки 301 редиректа с примерами смотрите в нашей статье Как настроить 301 редирект

 

Минутка философии…

301 редирект должен быть постоянным, но насколько постоянным может быть постоянство?

Представитель Google Джон Мюллер как-то дал ответ по поводу длительности 301 редиректа: «… Это может быть год, а в идеале даже больше года, так что мы (Google) действительно могли быть уверены, что все, что указывало на старые URL, указывает на новые URL».

Такая философия нам ясна, продолжаем.

 

HTTP 302 – Moved Temporarily, Found (Временно перемещен)

Код ответа 302 используется для временных перенаправлений. Поскольку конечный адрес может быть изменен в любой момент, браузер должен продолжать использовать старый URI-адрес и дальше.

По поводу PageRank. Официальная версия Google – любой тип 3xx переадресации (в том числе и 302) не теряет PageRank. Тем не менее, это не значит, что можно не переживать, если у вас настроен 302 редирект для постоянного перенаправления.

Google не заменяет старый URL на новый в своем индексе, но если он поймет, что 302 редирект был настроен по ошибке вместо 301, то переиндексирует URL вам на радость.

Безусловно, для этого нужно некоторое время — если это вообще случится. Вероятность этого такая же, как и того, что Google не будет индексировать закрытые в robots.txt страницы, но это уже совсем другая (печальная) история. Так вот, поисковая система, скорее всего, будет ранжировать такой URL-адрес ниже, чем если бы Вы настроили постоянное перенаправление.

Когда используют

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

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

 

На что стоит обратить внимание

302 лучше настраивать для временного перенаправления адреса, если будет использоваться GET и HEAD метод передачи запроса, так как работу 302 редиректа с другими запросами (POST, PUT) сложно спрогнозировать.

В случае, если используются запросы отличные от GET/HEAD, рекомендуется настраивать 307 редирект (о нем читайте ниже).

 

HTTP 303 – See Other (Просмотр других ресурсов)

На практике код ответа 303 похож на 302, но он не обозначает перемещение запрашиваемого адреса.

303 код ответа сервера указывает, что запрашиваемый ресурс можно найти по другому URL. То есть — браузеру только предоставляется адрес. Этот конечный адрес не кэшируется.

 

Когда используют

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

С 303 редиректом раньше отлично были знакомы разработчики, так как после POST отправки формы на сайте необходимо было настроить переадресацию, чтобы избежать повторной отправки формы после возможной перезагрузки страницы пользователем.

На что стоит обратить внимание

Некоторые (устаревшие) клиенты не интерпретируют статус 303. В таких случаях применяется 302 редирект.

 

HTTP 304 – Not Modified (Не модифицировано)

Браузеры могут отправлять запрос, который спрашивает, был ли ресурс изменен после определенного времени. Для внесения информации о последнем редактировании веб-страницы созданы заголовки Last-Modified и If-Modified-Since.

 

Браузер отправляет запрос, если ранее он уже загружал страницу и закэшировал ее. Если содержимое страницы было изменено с того времени как то сервер даст ответ со статусом 200 OK. Или, если ресурс не был изменен, сервер отправит статус 304 Not Modified – произойдет переадресация на сохраненную копию страницы.

 

Когда используется

Когда ответ сервера сигнализирует, что страница не изменялась со времени создания последнего кеша. То есть браузеру нет смысла повторно проверять страницу.

SEO-специалисты используют If-Modified-Since и Last-Modified.

Основная цель использования заголовков If-Modified-Since и Last-Modified состоит в том, чтобы обеспечить эффективное обновление кэшированной информации. Управление кэшем поможет улучшить скорость загрузки страницы, а также улучшить общую производительность веб-сайта и, тем самым, удобство для пользователей.

С точки зрения SEO, контролировать обновление кэша очень важно, потому что так можно улучшить сканирование и индексацию сайта.

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

Проблемы со сканированием, само собой, встречаются на действительно больших сайтах — сканируются страницы, которые вовсе не приоритетные для нас, а до необходимого контента робот может так и не дойти. Например, страница «О нас» может часто сканироваться, потому что на нее стоит ссылка на каждой странице сайта в шапке или в футере. Поэтому робот может считать ее важной, хотя на самом деле это не так.

Настроив If-Modified-Since и Last-Modified, можно показать роботу какие именно страницы есть смысл переобходить, а какие так и остались не измененными.

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

 

HTTP 305 – Use Proxy (Использовать прокси)

Переадресация со статусом 305 происходит, когда запрашиваемый ресурс доступен только через прокси-сервер. При этом адрес прокси указывается в ответе. Ожидается, что веб-браузер повторит запрос через прокси.

Некоторые браузеры (Mozilla, Internet Explorer) обрабатывают этот статус некорректно. Скорее всего, они расценивают небезопасным тот факт, что запрос отправляется серверу не напрямую.

Когда используется

Как было сказано выше, если получить доступ к странице можно только через прокси сервер. Прокси сервер используют для разный целей — начиная от анонимности и заканчивая необходимостью кэшировать содержимое, чтобы ускорить загрузку страницы.

 

На что стоит обратить внимание

Этот код был проигнорирован многими поисковыми системами и, фактически, заброшен.

 

HTTP 306 – Switch Proxy (Зарезервирован)

Изначально 306 код ответа сигнализировал, что клиент должен использовать определенный прокси-сервер . Больше он неактуален и просто остается зарезервированным.

 

 

HTTP 307 – Temporary Redirect (Временный редирект)

Этот статус был создан, чтобы уточнить 302 редирект.

Код ответа 307 означает, что сейчас запрашиваемый ресурс доступен по другому адресу, но потом все равно вернется на прежний URL. Точно так же, как и с 302, страница не кэшируется, а поисковые системы, вероятнее всего, не будут добавлять в свой индекс новый URL.

Этот код ответа аналогичен 302, за исключением того, что он не позволяет изменить метод запроса с POST на GET.

Когда используют

Настраивают 307 редирект в тех же случаях, что и 302 (смотрите выше). 302 всегда использовался для создания временных перенаправлений, но с появлением HTTP 1.1 код ответа 307 конкретизировал его. Хоть 307 редирект является стандартом HTTP 1.1., он более новый и точный, вовсе необязательно, что этот код ответа широко поддерживается серверами, браузерами или поисковыми системами. До тех пор, пока новый стандарт не станет более распространен, лучше всего указывать 302 редирект.

 

На что стоит обратить внимание

Чтобы различать две предполагаемые особенности кода ответа 302, создали коды 303 и 307. На практике, ни один из них не используется SEO-специалистами намеренно.

 

HTTP 308 – Permanent Redirect (Перенаправление на постоянной основе)

Этот код ответа — аналог 301 редиректа с той лишь разницей, что он не позволяет изменить метод запроса с POST на GET. Он точно так же автоматически кэшируется и передает внутренний вес на новую страницу.

Перемещен навсегда

 

Стоит отметить, что этот код ответа экспериментальный.

Когда используется

Как вы уже догадались, 308 редирект настраивают в тех ситуациях, где мы используем 301 редирект. Также когда необходимо выполнить перенаправление на сайте с большим количеством форм, использующих метод POST. Или, если для повторного запроса требуется метод POST.

Есть и другие случаи использования 308 редиректа. Например, Google Drive перенаправляет с кодом ответа 308, чтобы показать, что была прервана загрузка данных.

 

Справка

Чтобы понять, какой редирект использовать, нужно немного узнать о том, как работает HTTP.  Сейчас придется потерпеть, но потом вы будете великолепны.

HTTP протокол характеризует взаимодействие между двумя компьютерами (клиентом/браузером и сервером) с помощью запросов и ответов. GET, HEAD и POST — это самые распространенные методы запросов, которые помогают браузеру или клиенту «общаться» с сервером.

GET — получение ресурса (страницы). GET-запросы могут кэшироваться. Они остаются в истории браузера, могут быть добавлены в закладки и используются специально для извлечения содержимого страницы (HTML, изображения, JS, CSS).

HEAD — получение информации заголовка. HEAD полностью соответствует GET запросу с разницей, что при запросе HEAD нас не интересует сам ресурс (страница/документ), а только его HEADER и код ответа.

POST — отправка данных на сервер. Конечно, можно отправлять данные на сервер с помощью GET, но использовать POST запросы правильнее. Отправка больших объёмов данных с помощью GET нецелесообразна и имеет ограничения. Запросы POST чаще всего отправляются веб-формами. Вы точно когда-нибудь использовали форму на сайте, которая, когда вы нажимаете кнопку «Назад» или попытки обновить страницу, выдает предупреждение по типу «Все несохраненные данные будут утеряны». Это потому, что это был запрос POST. POST запросы не кэшируются, не сохраняются в истории браузера и не могут быть добавлены в закладки, поскольку они являются набором команд для сервера, а не запросом статического ресурса.

Та-дааааааам, Вы — великолепны.

 

И, закрывая тему.

 

Что мы должны использовать?

Работаем мы с такими редиректами: 301, 302, 304, 307, 308. А реально используем 301, 304 и 302. Догадались почему?

Да, потому что 307 и 308 коды ответа сервера еще не полюбились всем браузерам, клиентам и поисковым системам. Поэтому давайте общаться с ними на понятном для них языке.

Комментарии

Комментарии