Гід з 3хх редиректів

gid-po-301-redirectam

Усе, що потрібно знати про коди відповіді 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-адрес і надалі.

301-302 redirects

Щодо 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 ще не припали до душі всім браузерам, клієнтам і пошуковим системам. Тому давайте спілкуватися з ними зрозумілою для них мовою.

(5/5 - голосів 1)

Рекомендовані статті

Читайте також: