Коды и ошибки 301, 302, 303, 304

Коды и ошибки 301, 302, 303, 304

Сайты дело такое. В них постоянно что-то корректируется, так сказать живёт и движется. Поэтому нет ничего удивительно в том, что периодически можно столкнуться с кодами и ошибками 301, 302, 303, 304. О том, что эти коды значат и ещё о паре нюансов, и пойдет речь в данном обзоре.

 

Что значат коды и ошибки 301, 302, 303, 304?

Коды и ошибки 301, 302, 303, 304

HTTP 301 Moved Permanently (Навсегда перемещен) - этот код означает, что исходный запрошенный браузером документ (веб-страница) полноценно перенесён в другой документ, URL адрес которого указан в HTTP заголовке Location.

Если говорить простыми словами, то суть в следующем. В сайте была страница "page1". Владелец сайта перенёс её в страницу "page2". Пользователь открывает браузер и пытается открыть страницу "page1". Сайт возвращает браузеру код 301 и указывает страницу "page2" в заголовке "Location". Браузер перенаправляет пользователя на страницу "page2". Кстати, само действие, когда пользователя перекидывает с одной страницы в другую, называется редиректом (более подробно смотрите ссылки в конце обзора).

HTTP 302 Moved Temporarily, Found (Временно перемещен) - этот код означает, что исходный запрошенный браузером документ (веб-страница) временно перемещен в другой документ, URL адрес которого указан в HTTP заголовке Location.

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

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

Небольшая справка: GET - просто запросить страницу. POST - при запросе страницы также отправляются какие-то данные пользователя. Простой пример GET - это вы просто ввели в браузере URL страницы (данные никакие не отправляются). Простой пример POST - это вы открыли страницу, ввели какие-то данные в какую-нибудь формочку и нажали кнопку "Отправить".

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

Чтобы лучше понять смысл, рассмотрим ситуацию. Допустим, вы открываете страницу поиска в сайте. Вводите какой-то текст и нажимаете кнопку "Искать". Браузер отправляет POST запрос с текстом поиска. Сервер находит нужную страницу и отправляет клиенту код 303 с URL адресом этой страницы. В таком случае браузер будет открывать эту страницу GET запросом (т.е. текст поиска не будет передаваться, как это было бы при POST запросе).

Кстати, в противовес 303 так же существует код HTTP 307 Temporary Redirect (Временный редирект), который подразумевает передачу как GET, так и POST запроса. По сути, 303 и 307 это конкретизация действий с GET и POST, а смысл у них как у 302.

HTTP 304 Not Modified (Не модифицировано) - этот код передаётся в том случае, когда браузер пользователя при открытии документа (страницы) использовал HTTP заголовок If-Modified-Since (там ещё If-None-Match может быть), в котором указывается дата последней загрузки документа, и документ (веб-страница) не был изменен с указанного времени.

А теперь простыми словами о механизме. Когда пользователь в первый раз открывает страницу, то её содержимое браузер видит впервые, поэтому будет загружать страницу целиком (вместе с картинками, CSS, JS и т.п.). При этом браузер сохранит у себя в кэше эту страницу и её ресурсы (картинки, CSS, JS и т.п.).

Когда же браузер будет открывать страницу второй раз, то логично было бы уточнить у сервера, а нужно ли скачивать эти данные ещё раз или можно использовать те, что браузер уже сохранил у себя в кэше. В частности, CSS и JS обычно редко меняются. Поэтому при вторичном запросе документа (и его отдельных ресурсов) браузер добавляет заголовок If-Modified-Since с датой первой загрузки (и при необходимости If-None-Match). И если документ (или его отдельные ресурсы) не были изменены, то браузер получит код 304 и не будет ничего скачивать.

Подобный подход позволяет экономить трафик и быстрее загружать веб-страницы. В частности, у большинства сайтов существуют ресурсы (CSS, JS и т.п.), которые много весят, но которые практически никогда не меняются (порой даже со времён создания сайта). Соответственно, какой смысл каждый раз их таскать через интернет? В этом случае и применяется 304.

Примечание: Никогда не обращали внимание, что когда в первый раз открываешь сайт, то он грузится чуть медленнее, чем потом, когда открываешь другие его страницы? Это как раз эффект от использования 304.

 

Про важность редиректов в СЕО (SEO) и коды 301, 302, 303, 307?

Важно понимать, что от того, как вы применяете редиректы с помощью кодов 301, 302, 303 и 307, напрямую зависит качество сео-продвижения вашего сайта. Но сначала пару важных деталей и моментов.

Как поисковики воспринимают код и ошибку 301? Логика элементарна. Если страница полностью перемещена, то значит исходную страницу нужно убрать из поиска и добавить ту, которая указана в Location.

Как поисковики воспринимают код и ошибку 302, 303, 307? Ничего сверхнеожиданного. Если страница временно перемещена, то значит исходную страницу нужно оставить, а ту, которая указана в Location, не учитывать.

А теперь то, почему это важно. Абстрактный пример для понимания. Скажем, существует страница "page1", которая была перенесена в "page2", но вместо 301-го редиректа использовался 302-й. Вы изменили Description (см. обзор мета теги) в странице "page2". Что делать поисковику? 302-й код означает, что это временный перенос. Поэтому с большой вероятностью метаописание поисковик будет брать то, которое было у "page1", а не то, которое у "page2". А вот если использовать 301-й редирект, то поисковик будет брать то описание, которое у "page2".

Отдельно добавлю про 304 и СЕО. Стоит понимать, что поисковые боты также учитывают этот код. Суть в том, что для каждого сайта выделяется некий лимит обхода (абстрактно, 1000 страниц в месяц). А в сайте может быть много веб-страниц (скажем, 10 тысяч, 20 тысяч, 100 тысяч и т.д.). Поэтому если какие-то страницы вообще не меняются или остаются неизменными в течение длительного времени, то использование 304-го кода позволит высвободить часть лимита для обхода других страниц. Это, соответственно, увеличивает скорость индексации и плюс поисковые боты меньше нагружают сайт.

Также советую ознакомиться с обзорами Редирект (redirect) что это и зачем он нужен? и ещё PHP редирект - перенаправление на другую страницу, так как в них больше деталей и практики.

Понравилась заметка? Тогда время подписываться в социальных сетях и делать репосты!

Социальные сети

☕ Понравился обзор? Поделитесь с друзьями!

Рекомендуемые

Комментарии / отзывы  

0 # Тотошка 13.11.2022 07:43
Кста, 304 и к картинкам тема. Это про 304 и SEO, в общем нужная вещь.
Ответить | Ответить с цитатой | Цитировать | Сообщить модератору
Добавить комментарий / отзыв
Комментарий - это вежливое и наполненное смыслом сообщение (правила).



* Нажимая на кнопку "Отправить", Вы соглашаетесь с политикой конфиденциальности.
Социальные сети
Программы (Freeware, OpenSource...)