Безопасный редирect — это перенаправление, которое не создаёт циклов, не теряет посетителей и не открывает уязвимостей вроде открытого редиректа (open redirect). Самый надёжный способ — использовать постоянный редирект 301 на уровне сервера (.htaccess, nginx.conf) и всегда указывать протокол https в целевом адресе.
301 или 302: какой редирект выбрать
301 означает «перемещено навсегда» и передаёт вес страницы новому адресу — используйте его при смене домена, склейке www/без-www или переезде раздела сайта. 302 — временный редирект, поисковики не переиндексируют старый URL, его стоит применять для A/B-тестов, сезонных страниц или временных технических работ.
- 301 — постоянный переезд страницы или домена
- 302 — временное перенаправление, страница вернётся
- 307/308 — аналоги 302/301, но гарантированно сохраняют метод запроса (важно для форм)
Как правильно прописать редирект на HTTPS
На Apache в .htaccess это делается через RewriteCond и RewriteRule с проверкой HTTPS off, на nginx — через блок server, слушающий 80 порт, с return 301 на https-версию адреса. Главное правило безопасности: никогда не редиректите на адрес, полученный напрямую из параметра запроса пользователя без проверки — это классическая уязвимость open redirect, которую могут использовать для фишинга.
Что делать, если редирект зациклился
Бесконечный цикл (ERR_TOO_MANY_REDIRECTS) чаще всего возникает из-за конфликта правил на сервере и в CMS одновременно, либо из-за неверной настройки CDN (Cloudflare), когда SSL-режим не совпадает с настройками сайта. Проверьте правила по очереди: сначала уровень сервера, затем CMS, затем прокси — отключая их поочерёдно, легко найти источник цикла.
Правило безопасного редиректа: один переход должен вести к одному финальному адресу, без цепочек из трёх и более скачков — это ускоряет загрузку и не путает поисковых роботов.