301 чи 302 редирект: який обрати і коли це важливо для SEO
Редирект відправляє відвідувачів і пошукові системи з однієї адреси на іншу. Для людини результат виглядає однаково, хоч який тип ви оберете. Для пошуковика тип — це сигнал: «сторінка переїхала назавжди» або «сторінка тимчасово в іншому місці». Неправильний вибір рідко ламає сайт за одну ніч, але може сповільнити перенесення позицій на нову адресу й вплинути на те, який URL Google показує у видачі.
301 і 302 — по одній фразі
- 301 Moved Permanently — старої адреси більше немає, відтепер використовуйте нову. Пошуковики сприймають це як сильний сигнал, що індексувати й вважати канонічною треба адресу призначення.
- 302 Found (тимчасовий) — вміст тимчасово розміщено за іншою адресою, головною лишається вихідна. Пошуковики схильні залишати в індексі вихідну адресу.
Змінюєте URL і не збираєтеся повертати старий — ставте 301. Повернетеся (сторінка обслуговування, коротка акція, A/B-тест, тимчасово відсутній товар) — 302.
Усі типи редиректів в одній таблиці
| Тип | Зміст | Метод запиту під час переходу | Типове застосування |
|---|---|---|---|
| 301 | Постійний | Браузер може змінити POST на GET | Зміна URL, переїзд домену, HTTP→HTTPS |
| 302 | Тимчасовий | Браузер може змінити POST на GET | Тимчасове перенесення, гео- та мовна маршрутизація, тести |
| 303 | Дивіться інший | Завжди GET | Після надсилання форми (post/redirect/get) |
| 307 | Тимчасовий | Метод і тіло зберігаються | Тимчасові редиректи API та форм |
| 308 | Постійний | Метод і тіло зберігаються | Постійне перенесення, де POST має лишитися POST |
| Meta refresh | HTML-тег, затримка 0 і більше | — | Коли немає доступу до налаштувань сервера |
| JavaScript | window.location у скрипті | — | Односторінкові застосунки, крайній випадок |
Для SEO документація Google відносить 301 і 308 до постійних, а 302, 303 і 307 — до тимчасових. Різниця між 301 і 308 (чи 302 і 307) важлива браузерам і API, а не позиціям.
Як Google обробляє редиректи
Google називає серверні постійні редиректи сильним сигналом для вибору канонічної адреси, а тимчасові — слабким. На практиці:
- За 301/308 Google зазвичай замінює у видачі стару адресу новою і переносить на неї сигнали, наприклад посилання.
- За 302/307 Google зазвичай якийсь час і далі показує стару адресу — ви ж сказали, що переїзд тимчасовий.
- Якщо 302 стоїть довго, а адреса призначення виглядає постійною заміною, Google з часом може почати вважати його постійним. Покладатися на це не варто: маєте на увазі «назавжди» — так і скажіть кодом 301.
- Meta refresh з нульовою затримкою зазвичай розуміють як постійний редирект, із затримкою — як тимчасовий. JavaScript-редиректи спрацьовують лише після рендерингу сторінки, а він відбувається пізніше й менш надійно. Використовуйте обидва варіанти, лише якщо серверний редирект неможливий.
Редирект — лише один із сигналів канонізації поряд із тегом rel=canonical, внутрішніми посиланнями та картою сайту. Тримайте їх узгодженими; як вони працюють разом, пояснює стаття про канонічну адресу.
Коли вибір справді важливий
- Переїзд сайту чи зміна домену — завжди 301 (або 308). 302 тут може довше тримати старі адреси у видачі й затримати перенесення сигналів.
- HTTP → HTTPS і www ↔ без www — 301, по одному на адресу, одразу на підсумкову версію. Це постійні рішення.
- Видалений товар чи стаття з близькою заміною — 301 на заміну. Якщо справжнього аналога немає, 404 або 410 чесніші за редирект на головну, який Google однаково може вважати «м’якою 404».
- Сезонні сторінки чи товари, які повернуться — 302, а краще залишити сторінку відкритою з позначкою.
- Визначення мови чи країни — тимчасові редиректи трапляються часто, але не відводьте примусово пошукових роботів від мовних версій; пов’язуйте версії через hreflang.
Ланцюжки й цикли
Ланцюжок — редирект, що веде на інший редирект: http://example.com/page → https://example.com/page → https://www.example.com/page → https://www.example.com/new-page. Кожен крок — зайве коло запиту для відвідувача. Google проходить обмежену кількість переходів (у документації згадано до 10) і на довгому ланцюжку може зупинитися раніше кінця. Лікується так: кожна стара адреса веде одразу на підсумкову, а внутрішні посилання оновлюються на неї.
Цикл — ланцюжок, що повертається на початок: A → B → A. Браузер зупиняється з помилкою «забагато переадресацій», і сторінка недоступна нікому, включно з роботами. Зазвичай цикли виникають, коли два правила суперечать одне одному: наприклад, CDN примусово ходить через HTTP, а сервер — примусово на HTTPS.
Як налаштувати 301
Редиректи налаштовують на сервері або в CMS, а не в коді сторінки. Для двох найпоширеніших вебсерверів:
# Apache (.htaccess)
Redirect 301 /old-page/ https://example.com/new-page/
# Nginx
location = /old-page/ { return 301 https://example.com/new-page/; }
У WordPress і більшості інших CMS те саме робить плагін редиректів або вбудований менеджер переадресацій — без редагування серверних файлів. Якщо сайт стоїть за CDN, його правила редиректів спрацьовують раніше, ніж запит дійде до вашого сервера: зручно, але пам’ятайте про них під час налагодження. Під час переїзду всього домену перенаправляйте кожен шлях на той самий шлях на новому домені, а не все на головну. Хоч яким способом ви користуєтеся, перевірте результат ззовні: одрук у правилі може непомітно віддавати 302, створити цикл або перенаправити сторінки, яких ви не збиралися чіпати.
Як перевірити редирект
Не вірте адресному рядку: браузери агресивно кешують 301, і після зміни правила ви ще довго можете бачити стару поведінку. Перевіряйте на боці сервера:
- Перевірка редиректів проходить увесь ланцюжок і показує кожен крок із кодом — видно 302 там, де чекали 301, зайві переходи й цикли.
- Перевірка коду відповіді показує точний код однієї адреси та кінцеву точку.
- З термінала:
curl -I https://example.com/old-pageвиведе код і заголовокLocation.
Покроковий розбір ланцюжків і пошук їхніх джерел — у статті як перевірити редиректи та ланцюжки переадресацій.
Чек-лист переїзду
- Вивантажте повний список старих адрес: із краулера, карти сайту, аналітики й Search Console (спершу сторінки з трафіком і зворотними посиланнями).
- Зіставте кожній старій адресі найближчу нову, одну до одної. Не відправляйте все на головну.
- Налаштуйте 301 на сервері, а не через meta refresh чи JavaScript.
- Об’єднуйте зміну протоколу, хоста й шляху в один перехід, де це можливо.
- Оновіть внутрішні посилання, canonical, hreflang і карту сайту на нові адреси — хай редиректи обслуговують лише зовнішні посилання й закладки.
- Перевірте вибірку старих адрес (зокрема з параметрами й скісною рискою в кінці) перевіркою редиректів до запуску й одразу після.
- У разі зміни домену скористайтеся інструментом «Зміна адреси» в Google Search Console і тримайте редиректи довго — Google радить щонайменше рік.
- Стежте в Search Console за помилками 404 і помилками переадресації в наступні тижні.