Как сделать редирект - подробное руководство по настройке и использованию

Интернет-маркетолог
Стаж 15 лет
Обновлено: 21.02.2022 Опубликовано: 29.07.2021

Редирект — это перенаправление или переадресация, благодаря редиректу можно перенаправлять посетителя на нужный адрес внутри сайта. Например, вы сохранили страницу в закладки, но за это время она поменяла свой адрес, однако, вебмастер настроил переадресацию (301 редирект) со старой страницы на новую.

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

Мы расскажем, какие бывают редиректы, для чего используются, чем отличаются, как их настроить и не «сломать» сайт.

Как работает редирект

  1. В настройках сайта указывается адрес страницы (донора), с которой посетитель должен перенаправляться , например, www.kokoc.com, и страницы (акцептора), на которую он должен попасть, например, kokoc.com.
  2. Чаще всего правила прописываются не для отдельных страниц, а для целых групп. Например, правило может гласить, что со всех страниц сайта с WWW должна идти переадресация на страницы без WWW, как в нашем случае.

  3. Посетитель вводит в адресную строку браузера адрес www.kokoc.com.
  4. Браузер обращается к серверу сайта, запрашивая страницу www.kokoc.com.
  5. Сервер обрабатывает запрос, последовательно применяя все правила, которые прописаны в его настройках.
  6. На каком-то шаге он обнаруживает инструкцию «со страницы с WWW нужно переадресовать посетителя на страницу без WWW» и отправляет в ответ браузеру страницу с адресом kokoc.com. Если правило было прописано на самом начальном этапе обработки запроса — до загрузки контента первой страницы — переадресация пройдет максимально быстро и незаметно для пользователя.

  7. Посетителю в браузере загружается контент страницы kokoc.com.

В каких случаях нужны редиректы

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

Редирект на сайте используется почти для таких же целей:

  • добавляют или не добавляют перед доменом префикс WWW — рудимент, оставшийся еще с эпохи зарождения интернета;
  • ставят или не ставят в конце слеш (/);
  • пишут адрес заглавными буквами или строчными;
  • указывают или не указывают расширения .html, .htm, .php и т. д.

Эти варианты называют зеркалами. Важно сделать, чтобы при любом таком написании пользователь попал на одну и ту же страницу сайта, но не на 404.

Как бы не запутаться в зеркалах!

Как бы не запутаться в зеркалах!

Кроме того, поисковые системы не понимают, что зеркала — это вариации адреса одной и той же страницы. Например, для Google и «Яндекса» это 4 разных URL:

  • www.kokoc.com
  • kokoc.com
  • www.kokoc.com/
  • kokoc.com/

Они будут индексироваться отдельно, в результате возникнет дублирование контента.

Редирект решает проблему перенаправления пользователя и дублей контента для ПС. Страницы принудительно склеиваются: все побочные варианты написания перенаправляются на один URL — тот, что мы будем считать основным.

Перенаправление с HTTP на HTTPS или обратно

После внедрения защищенного протокола HTTPS возник еще один вариант зеркала. URL на HTTP и на HTTPS также воспринимаются поисковыми системами как разные.

С HTTP на HTTPS тоже нужен редирект

С HTTP на HTTPS тоже нужен редирект

Переезд на другой домен

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

Смена CMS сайта

У нового движка может быть другой алгоритм формирования URL страницы. К примеру, если на старом сайте адрес страницы товара имел вид site.ru/catalog/tovar, то на новом это site.ru/product/tovar. Нужно настраивать редирект всех таких страниц, чтобы не потерять позиции в поисковых системах и трафик.

Переадресация на мобильную версию

Если для адаптации сайта под мобильные вы выбрали вариант с отдельной мобильной версией, то нужно перенаправлять всех посетителей с мобильных устройств на нее. Например, основной адрес вашего сайта — site.ru, а мобильной версии — m.site.ru. Благодаря настройке редиректа сервер будет определять устройство посетителя, и если он использует смартфон или планшет — перенаправлять его на адрес с префиксом m.

Появление поддоменов

При расширении сайта часто принимается решение вынести отдельные каталоги товаров или услуг на поддомены. Например, вы сделали для бытовой техники поддомен bt.your-site.ru, а значит, понадобится редирект всех старых адресов раздела your-site.ru/bt на адреса bt.your-site.ru.

Удаление страниц

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

К примеру, у вас были страницы двух отдельных услуг: подготовки рекламных объявлений для PPC (site.ru/uslugi/kreativy) и комплексного запуска рекламных кампаний (site.ru/uslugi/reklama-ppc). Вы некоторое время активно продвигали обе услуги: покупали ссылки, создавали посты со ссылками на эти страницы в соцсетях и т. д. Но позже пришли к выводу, что подготовка объявлений как отдельная услуга не оправдывает себя, и стали предоставлять ее только в рамках комплексного запуска.

Хороший выход — удалить (скрыть) страницу о подготовке объявлений и поставить с нее редирект на страницу комплексного запуска. Конечно, позаботившись, чтобы на странице-акцепторе была информация, что подготовка рекламных объявлений входит в комплексную услугу. Так вы не потеряете ссылочный вес страницы и посетителей.

Изменение структуры сайта

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

Например, на вашем сайте в корне каталога был небольшой раздел «IP-камеры» с парой десятков товаров (site.ru/catalog/ip-camery). Постепенно вы расширили ассортимент продаж и решили создать целый раздел «Видеонаблюдение», а уже в нем подразделы с камерами, регистраторами и т. п. Странице с IP-камерами пришлось сменить адрес на site.ru/catalog/videonabludenie/ip-camery. Что делать, чтобы не потерять ее позиции в ПС, посещаемость, ссылочный вес? Конечно же поставить редирект с site.ru/catalog/ip-camery на site.ru/catalog/videonabludenie/ip-camery.

Перенаправление с устаревших страниц

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

Например, был некий популярный товар X. По каким-то причинам производитель снимает его с производства, и выпускает товар Y — с небольшими доработками, немного другим дизайном, но все равно это почти полный аналог X. Здесь два варианта решения:

  1. Написать на странице товара X, что он снят с производства, но имеется аналог — и дать ссылку. Неплохо, но есть риск, что покупатель не увидит ссылку, не захочет по ней переходить и т. д.
  2. Поставить редирект со страницы товара X на страницу товара Y и где-то на первом экране заметным образом указать, что это — улучшенная версия X. Рискованно только в том случае, если дизайн товара поменяли кардинально. Посетитель увидит не то фото, которое ожидал, может решить, что попал не туда, и сразу уйдет со страницы.

Классификация редиректов: отличия и применение

Все редиректы можно классифицировать по двум признакам:

  1. По типу переадресации. Каждому редиректу присваивается определенный тип — 301, 302, 307 и т. д. Он одновременно означает и код протокола HTTP, который будет выдаваться в ответ на запрос адреса страницы-донора, и статус этой страницы для поисковых систем.
  2. По способу реализации редиректа. Переадресацию можно настроить с помощью панели управления сайтом, директив файла .htaccess, PHP-скриптов, JavaScript и так далее.

Разберем отличия и применение каждого подвида.

Типы редиректов

300 «Множественный выбор» (Multiple Choices)

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

301 «Перемещена навсегда» (Moved Permanently)

Используется чаще всего. 301 редирект означает, что страница со старым адресом уже не существует и вместо нее всегда нужно показывать другую страницу. ПС удалит из индекса страницу-донор и передаст ее ссылочный вес на страницу-акцептор.

302 «Перемещена временно» (Moved Temporarily)

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

303 «Смотри другое» (See Other)

Используется редко. В отличие от 301 или 302 редиректа этот код ответа не говорит, что «страница перемещена». Он говорит: «то, что ты хочешь, есть на другой странице, посмотри ее». На практике в основном, встречаются два варианта его использования:

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

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

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

305 «Используй прокси» (Use Proxy)

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

306 — зарезервировано

Этот вид применялся раньше, но был отменен за ненадобностью. Сейчас он в статусе «зарезервирован» и не используется. Если в будущем появится необходимость в отдельном коде переадресации, вполне можно использовать 306.

307 «Временная переадресация» (Temporary Redirect)

Аналогичен 302-му, но с небольшими отличиями:

  • 307 редирект более новый и точный. Создан для HTTP 1.1.;
  • более корректно, чем 302 редирект, обрабатывает переадресацию запросов с методом POST;
  • поддерживается не всеми браузерами, поэтому в большинстве случае лучше использовать переадресацию 302 типа.

308 «Перемещено навсегда» (Permanent Redirect)

Аналог 301-го редиректа. Отличается тем, что сохраняет POST-метод обработки запроса, не меняя его на GET. Редиректы 301 и 308 обрабатываются Google-ботом одинаково.

Способы реализации редиректов

Все реализации редиректов можно разделить на 2 группы:

  1. Серверные. Переадресации с помощью правил .htaccess, панели управления хостингом, PHP-скриптов — это примеры серверных реализаций. Такие редиректы происходят очень быстро, практически моментально, так как выполняются еще на этапе обработки запроса сервером.
  2. Браузерные. JavaScript, HTML, Meta-refresh — это браузерные редиректы. Они гораздо медленнее серверных, так как срабатывают уже после загрузки страницы или ее части в браузере.

Стандартные переадресации — с HTTP на HTTPS, со старого адреса на новый и т. д. —чаще всего реализуются с помощью серверных редиректов. Они надежные, быстрые и незаметные. Браузерные редиректы в этих случаях использовать крайне не рекомендуется: помимо медленного срабатывания, они могут не поддерживаться браузерами (тот же JavaScript может быть отключен).

Разберем подробнее.

Настройки редиректа с помощью панели управления хостингом

Большинство популярных панелей управления позволяют добавить в настройках правила типовых редиректов: с адреса, начинающегося на WWW на адрес без WWW, с HTTP на HTTPS и подобные. Что-то более точное в панели можно настроить, но уже через .htaccess — просто открывать и редактировать его вы можете и из панели управления хостингом.

Редирект через .htaccess

.htaccess — это специальный конфигурационный файл, который расположен в корневой папке сайта. Настройка редиректа с помощью прописанных в нем правил встречается чаще всего. Это переадресация серверного типа, она работает очень быстро и практически незаметна для пользователя.

Важный момент: файл .htaccess существует только у сайтов под управлением веб-сервера Apache, но их — большинство.

Чтобы проверить, под Apache ваш сайт или нет, можно воспользоваться инструментом от Netcraft. Смотрите в разделе Hosting History, в колонке Web Server.

Kokoc.com — под управлением Apache

Kokoc.com — под управлением Apache

Редирект на серверах Ngnix

Если ваш сайт работает не под Apache, а под Ngnix, здесь все настраивается совершенно по-другому. Есть основной файл конфигурации для всех доменов на сервере — ngnix.conf, а есть отдельные файлы для виртуальных хостов, т. е. отдельных доменов.

Для редактирования правил используется терминал. Синтаксис переадресаций для Ngnix отличается от синтаксиса в .htaccess. Но есть специальные сервисы, например, Winginx, которые помогают преобразовать правила из .htaccess в правила конфигурации Ngnix.

Плагины CMS

Для того чтобы администратору сайта не приходилось вникать в особенности программирования на PHP или синтаксис директив в .htaccess, разработчики CMS и энтузиасты создали множество специальных плагинов:

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

Особенно широкий выбор дополнений, конечно, в Wordpress. Есть узкоспециализированные плагины, например, только для переадресаций на HTTPS (Easy HTTPS Redirection).

Простой плагин только для одной функции

Простой плагин только для одной функции

Есть многофункциональные: популярный плагин Redirection позволяет настраивать практически любые варианты редиректов.

Свыше 2 миллионов установок

Свыше 2 миллионов установок

А в арсенале Rank Math SEO не только настройка перенаправлений, но и большое количество других инструментов для оптимизации сайта.

В названии не просто так написано «лучший» — это действительно мегаполезное многофункциональное дополнение с хорошими отзывами

В названии не просто так написано «лучший» — это действительно мегаполезное многофункциональное дополнение с хорошими отзывами

PHP-редирект

Переадресация этого типа также относится к серверным, хотя и работает чуть медленнее той, что сделана через .htaccess. Правила прописываются обычно в индексном файле сайта (index.php).

Редирект через PHP оптимален в тех случаях, когда у вас много правил для отдельных страниц или групп страниц. Файл .htaccess может сильно нагружать сервер, из-за множества директив.

JavaScript-редирект

Это уже переадресация браузерного типа. Редирект произойдет только когда страница-донор будет загружена в браузере. JavaScript-редирект оптимально подходит для нескольких ситуаций:

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

Переадресация с задержкой

Типовой случай: вы переехали на другой домен и при этом сменили дизайн. Если просто перенаправлять пользователя со старого на новый сайт без объяснений, он может не понять, что происходит, решить, что столкнулся с действием вируса и закрыть страницу. А вот если написать на старом домене: «Мы переехали! Сейчас вы будете перенаправлены на наш новый сайт» — поведенческие показатели будут лучше.

  • Переадресация нужна после определенного действия пользователя на странице, например, нажатия на ссылку или кнопку. Пример использования — запрос подтверждения у пользователя при переходе по внешней ссылке.
Подтверждение перехода по ссылке на сайте text.ru

Подтверждение перехода по ссылке на сайте text.ru

  • Нужна вторая переадресация после 301 редиректа. После оформления заказа вы направили посетителя на страницу благодарности. А позже, после того как пользователь с ней ознакомится, хотите перенаправить его на главную страницу, в личный кабинет, или на страницу акций. Второй подряд 301 редирект может неблагоприятно сказаться на SEO-показателях. А вот JavaScript здесь будет уместен, тем более, что в нем легко выставить тайминг.

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

HTML-редирект или meta-refresh

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

Пример кода тега meta refresh с задержкой перенаправления 2 секунды

Пример кода тега meta refresh с задержкой перенаправления 2 секунды

У meta-refresh плохая репутация среди поисковых систем, так как этот метод довольно часто использовался для перенаправления на дорвеи. Кроме того, у meta-refresh есть и другие недостатки:

  • поддерживается не всеми браузерами;
  • приводит к ошибкам сканирования. Поисковый робот не сканирует страницу, на которой расположен метатег refresh, а сразу переходит к той, на которую ведет переадресация;
  • может определяться Google и «Яндексом» как спам, с соответствующими санкциями;
  • Google-бот может игнорировать страницы с этим метатегом и не индексировать их.

W3C (World Wide Web Consortium) не рекомендует использовать этот атрибут.

Однако в некоторых случаях использование такого редиректа может быть целесообразным, например, для:

  • перенаправления посетителя после оформления заказа на страницу благодарности;
  • «подстраховки» переадресаций, реализованных на JavaScript — если браузер посетителя не поддерживает скрипты;
  • перенаправления посетителя на страницу со ссылками для загрузки корректных браузеров — если в его браузере ваш сайт будет отображаться и работать с ошибками.

Rel=«canonical»: редирект для поисковых систем

Строго говоря, это не переадресация, а атрибут для поисковых систем. Но так как для поискового робота она работает почти как редирект, мы решили упомянуть и ее.

Тег rel=«canonical» сообщает краулеру, что страница, на которой он находится, не важна, не нужно ее индексировать и показывать в поиске. Зато есть аналогичная каноническая, оригинальная страница (в теге указывается ссылка) и нужно проиндексировать ее.

Как работает rel=«canonical». Источник: https://ahrefs.com

Как работает rel=«canonical». Источник: https://ahrefs.com

Атрибут rel=«canonical» используется для исправления проблемы с дублированным контентом, как и 301 редирект. В каких случаях какой метод лучше использовать - обсудим далее.

В каких случаях применять 301 редирект, а в каких — rel=«canonical»

Ситуация 301 редирект rel=«canonical»
страница удалена или уже неактуальна + -
смена домена + -
страница навсегда перемещена + -
дублированный контент с точки зрения поисковых систем, но не пользователя (одинаковые описания товаров для разных цветов, размеров и т. п.) - +
дублированный контент с точки зрения пользователя (статьи на одну и ту же тему) + -
по сути одна и та же страница, но с разными url (сортировки товара в каталогах, страницы пагинации) - +
у вас есть сайты с похожим контентом. в индексе нужно оставить только один, но для пользователей вы хотите сохранить доступными все. это поддерживается только google, у яндекса канонический адрес не учитывается, если в его качестве указан url в другом домене или поддомене. - +

Примеры применения 301 редиректа и rel=«canonical»

Основное отличие ситуаций, в которых лучше использовать тег rel=«canonical», а не 301-й редирект, — вы хотите оставить страницу-донор доступной для пользователя.

Основное отличие ситуаций, в которых лучше использовать тег rel=«canonical», а не 301-й редирект, — вы хотите оставить страницу-донор доступной для пользователя.

Также атрибут rel=«canonical» можно применять в том случае, когда 301 переадресацию по каким-то причинам сделать очень сложно или невозможно.

Какой тип редиректа выбрать

Чаще всего правильным решением будет поставить 301 редирект. С точки зрения SEO в большинстве случаев это самая правильная переадресация:

  1. Вес и авторитет страницы-донора передается на страницу-акцептор.
  2. Сохраняется значение ссылок, что когда-то были проставлены на удаляемую из индекса страницу.
  3. Сохраняются позиции в поисковой выдаче.
  4. Не теряется трафик из органического поиска, переходы по закладкам в браузерах, ссылкам на сторонних ресурсах, из социальных сетей и т. п.

Оптимальная реализация редиректа — через файл .htaccess:

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

Дальше мы будем говорить именно о настройке 301 редиректа через .htaccess как о самом оптимальном и распространенном методе.

Настройка редиректа в файле .htaccess

Где найти файл .htaccess и как его редактировать

Конфигурационный файл обычно расположен в корневой папке сайта. Его можно найти двумя способами:

  • через встроенный файловый менеджер на панели управления хостингом.
  • через панель управления вашей CMS. В некоторых движках есть возможность открывать и редактировать файлы сайта прямо из админки. Например, в Битрикс. при помощи FTP-клиента. Это самый распространенный способ.

Для работы с FTP чаще используется Filezilla — простой и бесплатный FTP-клиент. Если вы и дальше планируете вносить изменения на сайт самостоятельно, установите эту программу, она еще не раз пригодится

Интерфейс Filezilla и файл .htaccess

Интерфейс Filezilla и файл .htaccess

Файл можно править прямо на сервере: в Filezilla нажмите на него правой кнопкой мыши и выберите «Просмотр/Правка». Но для многих новичков удобнее скачать файл на компьютер.

Открыть и редактировать .htaccess можно с помощью простого текстового редактора — стандартного «Блокнота» в Windows. Но лучше использовать специализированные программы — например, бесплатный Notepad++.

Файл .htaccess может находиться не только в корневой папке, но и во вложенных. Иерархия простая: правила, прописанные в корневом файле, распространяются на весь сайт, а прописанные во вложенном — только на каталог. При этом правила в .htaccess каталога приоритетнее правил в «главном» файле.

Если вы не можете найти .htaccess, варианта три:

  1. Ваш сайт не под Apache. Как это проверить, мы писали выше;
  2. Файл называется по-другому. Очень редко встречается, но возможно. Актуальное название можно уточнить у хостинг-провайдера: это может быть, например, .config, .htaccess.http, access.conf.
  3. Файл еще не создан. Это самый распространенный случай. Нужно создать файл .htaccess и позже вписать в него директивы переадресаций.

Сделать новый файл .htaccess просто:

  1. Создайте пустой текстовый файл с расширением .txt.
  2. Переименуйте его, убрав имя и добавив расширение .htaccess. Файл готов.
  3. Если вы работаете на macOS, файл без имени не будет виден. Тогда присвойте любое имя, а переименуете уже после загрузки на сервер.

Сделайте резервную копию файла

Перед началом редактирования обязательно сделайте резервную копию файла .htaccess. С ее помощью проще всего будет отменить все изменения, если что-то пойдет не так.

Котик плохого не посоветует

Котик плохого не посоветует

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

Внедряйте правила по одному и проверяйте после каждого изменения

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

Для работы с командами в .htaccess их надо разъяснить. Редиректы в .htaccess чаще всего прописываются с использованием модуля mod_rewrite. В этом случае в примерах кода вы увидите команды RewriteEngine On, RewriteCond, RewriteRule (см. ниже).

Также редирект можно настроить с помощью директив Redirect либо RedirectMatch — команд из модуля mod_alias. Это стоит знать, чтобы не «смешивать» директивы и условия из разных модулей.

Правила из mod_alias используются для простых перенаправлений: к примеру, один URL переадресуется на другой. Модуль mod_rewrite позволяет делать более сложные вещи, создавать сложные маски и условия для URL и переадресаций.

Комментарии

Строки в .htaccess, которые начинаются со знака решетки (#), не считываются и не выполняются сервером. Поэтому в таких можно оставлять комментарии к правилам — что здесь и для чего вы делали.

Также с помощью этого знака можно отключать правила, которые пока не нужны или некорректны. Просто поставьте в начале каждой строки правила знак # — и оно перестанет работать.

Флаги

В конце директивы RewriteRule указываются флаги. Чаще всего это два флага — [L,R=301]:

  1. L означает команду серверу прекратить преобразования после этой строки.
  2. R=301 — обозначение редиректа и его тип.

Что должно быть в начале файла

Перед правилами по переадресации нужно указать три директивы:

  • RewriteEngine On. Включает механизм преобразований модуля mod_rewrite.
  • Options +FollowSymLinks. Часто требуется для корректной работы модуля.
  • RewriteBase. Это базовая часть URL, которая будет дописана в начале всех адресов, получившихся после преобразований по директивам .htaccess. Чаще всего в RewriteBase указывается только слеш (/). В этом случае подразумевается, что все URL начинаются от корня сайта.

Лучше всего указать эти директивы в начале файла .htaccess, тогда перед правилами их уже не нужно повторять.

Кириллические адреса

В .htaccess нельзя использовать кириллические имена сайтов. Необходимо преобразовать их в формат punycode. Можно воспользоваться любым whois-сервисом — в нем будет указан адрес сайта в этом формате.

Название кириллического домена в формате punycode будет выглядеть примерно так

Название кириллического домена в формате punycode будет выглядеть примерно так

Добавьте блок IfModule

Если на вашем сервере не установлен модуль для редиректа, например mod_rewrite, то директивы для него в .htaccess могут вызывать ошибки. Сайт будет работать некорректно.

Окружите фрагмент кода с правилами для mod_rewrite условием IfModule — это поможет избежать проблем.

Например, вы хотите добавить вот такую переадресацию:

RewriteCond %{HTTP_HOST} ^www.domain\.ru$ [NC]
RewriteRule ^(.*)$ http://domain.ru/$1 [R=301,L]

Чтобы избежать ошибок, сделайте так:
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_HOST} ^www.domain\.ru$ [NC]
RewriteRule ^(.*)$ http://domain.ru/$1 [R=301,L]
</IfModule >

Сервер, увидев условие (If), проверит, установлен ли модуль mod_rewrite. Если нет — директивы внутри условия выполняться не будут.

Порядок правил имеет значение

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

Например, вы хотите перенаправлять URL вида site.ru/articles/…. на URL вида site.ru/blog/… Но при этом у вас есть страница site.ru/articles/faq, которую вам нужно перенаправить на URL site.ru/faq.

Если вы расположите вторую (частную) переадресацию в файле .htaccess ниже первой (более общей), то при получении запроса на страницу site.ru/articles/faq сервер дойдет до правила «перенаправляем все site.ru/articles/… на site.ru/blog/...» и выполнит его. Клиент попадет на страницу site.ru/blog/faq. Правильная переадресация не будет выполнена, так как она расположена ниже.

Почему нужно пробовать разные варианты

Допустим, вы нашли под свою задачу подходящий фрагмент кода с правилом, добавили его в .htaccess, но переадресация не заработала или вообще все сломалось. Ничего страшного, это нормально: сервер Apache, как и всякое ПО, постоянно обновляется. У вас может быть установлена более новая или более старая версия, чем та, для которой подходит этот код.

Попробуйте вариант с другим синтаксисом. Проще говоря, вам нужен код, в котором команды и условия написаны немного по-другому.

Совсем продвинутый вариант — узнать, какая у вас установлена версия Apache, найти по ней официальную справку и посмотреть, как должны выглядеть директивы. Другой вопрос, стоит ли тратить на это ваше время.

Используйте генераторы .htaccess

Чтобы не искать код директивы для вашей задачи, правило для .htaccess можно сгенерировать в специальных сервисах. В интернете их хватает, и они работают примерно одинаково:

  • отмечаете, какой редирект вам нужен: обычно предлагается на выбор несколько типовых. Также можно указать страницы-доноры и акцепторы для 301 редиректа;
  • указываете дополнительные параметры редиректа, например, включение опции FollowSymLinks;
  • получаете готовый код и вставляете его в конфигурационный файл.

Некоторые генераторы, например, IKSWEB, предоставляют несколько вариантов кода — для разных версий Apache. также вы можете использовать:

Возможности Htaccess.ru

Возможности Htaccess.ru

Как настроить 301 редирект в .htaccess

Далее приведем один или несколько вариантов кода для правил. В части из них будут указаны условные адреса сайтов и страниц — вам нужно будет заменить их на ваши.

Редирект сайта с WWW — на без WWW

Первый вариант:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

Второй вариант:

RewriteCond %{HTTP_HOST} ^www..your-site\.com$ [NC]
RewriteRule ^(.*)$ http://your-site.com/$1 [R=301,L]

Редирект сайта без WWW на URL с WWW:

Первый вариант:

RewriteCond %{HTTP_HOST} !^www\..* [NC]
RewriteRule ^(.*) http://www.%{HTTP_HOST}/$1 [R=301]

Второй вариант:

RewriteCond %{HTTP_HOST} ^your-site.com [NC]
RewriteRule ^(.*)$ http://www.your-site.com/$1 [L,R=301,NC]

Редирект на HTTPS с HTTP

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Второй вариант:

RewriteCond %{SERVER_PORT} !^443$
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301,L]

Третий вариант:

RewriteCond %{HTTPS} =on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [QSA,L]
RewriteCond %{HTTPS} off
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

Четвертый вариант:

RewriteCond %{HTTPS} !on
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

Редирект с страницы со слешем на URL без слеша, и наоборот

На URL без слеша

Первый вариант:

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]

Второй вариант:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} ^(.+)/$
RewriteRule ^(.+)/$ /$1 [R=301,L]

На URL со слешем

Первый вариант:

RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

Второй вариант:

RewriteCond %{REQUEST_URI} /+[^\.]+$
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L]

Заменяем два последовательных редиректа на один

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

Пример переадресации с URL с WWW сразу на адрес с протоколом HTTPS и без префикса WWW, минуя промежуточный редирект (с HTTP на HTTPS):

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]

Или второй вариант:

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ https://%1/$1 [R=301,L]
RewriteCond %{HTTP:PORT} !^443$
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R]

301 редирект одной страницы

Проще всего воспользоваться директивой Redirect. Попробуйте один из вариантов:

Redirect 301 /old-page /new-page
или
Redirect 301 /old-page/ https://your-site.com/new-page

Можно перенаправить и с помощью модуля mod_rewrite:

RewriteCond %{REQUEST_URI} ^/old-page/$
RewriteRule ^.*$ http://your-site.com/new-page/? [R=301,L]

Переадресация папки

Первый вариант:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]

Второй вариант:

RewriteRule ^old-catalog /new-catalog/$1 [R=301,L]

Редирект с одного домена на другой

Первый вариант:

RewriteCond %{HTTP_HOST} ^old-your-site.com [NC,OR]
RewriteCond %{HTTP_HOST} ^www.old-your-site.com [NC]
RewriteRule ^(.*)$ https://new-your-site.com/$1 [L,R=301,NC]

Второй вариант:

RewriteCond %{HTTP_HOST} ^www\.old-your-site\.com$ [NC]
RewriteRule ^(.*)$ http://new-your-site.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^old-your-site\.com$ [NC]
RewriteRule ^(.*)$ http://new-your-site.com/$1 [L,R=301]

Как проверить, правильно ли сделана переадресация

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

    Как работает кеш в браузере

  • Еще лучше проверять статусы страниц с помощью специальных сервисов:
  • После настройки переадресации получили ошибку 500? Первое, что нужно сделать — проверить ваш код на опечатки, например, в адресе страницы, командах. Это самая распространенная причина.
  • Можно воспользоваться сервисом проверки ошибок в .htacces . Но если вы сделали опечатку в адресе страницы переадресации, сторонний сервис этого не обнаружит, нужно смотреть самому.

  • Если сайт большой и вы сделали массовую переадресацию десятков, сотен страниц — для проверки можно использовать Screaming Frog SEO Spider. Он покажет статус ответа сервера по каждой странице и еще массу полезной информации.

Типичные ошибки переадресаций

Редирект вместо каноникализации

Если вы сделаете 301 редирект там, где нужен тег rel=canonical, то можете ухудшить юзабилити сайта. Это, в свою очередь, скажется на позициях в ПС и продажах. О том, когда нужно выбирать канонизацию, а когда — редирект, мы подробно написали выше.

Редирект robots.txt

Иногда при смене домена сайта настраивают массовую переадресацию всех страниц и файлов, в том числе файла robots.txt. Но, для того, чтобы в поисковых системах склейка доменов прошла быстрее, robots.txt на старом домене нужно оставить доступным для сканирования, не переадресовывать.

Страница-акцептор нерелевантна донору

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

Например, Google в Search Console может указать по таким переадресациям ложную 404 ошибку. Для него ситуация выглядит так: страница не существует, правильного редиректа на 404 не сделано, а 301 редирект «не считается», так как ведет на нерелевантную страницу.

Цепочки переадресаций

Нередко возникают ситуации, когда страница редиректится несколько раз.

Например, вы удалили страницу A и поставили 301 переадресацию на страницу B. Позже удалили B и поставили редирект на страницу C. В итоге пользователь, который хочет попасть на страницу A, сначала перенаправляется на страницу B, а потом — на C.

Робот не понимает, зачем вы так делаете

Робот не понимает, зачем вы так делаете

В идеале редирект на странице A нужно исправить, поставив его сразу на страницу C.

А здесь робот доволен — редирект сделан правильно

А здесь робот доволен — редирект сделан правильно

Чем плохи цепочки редиректов:

  • они замедляют открытие конечной страницы, ухудшают поведенческие показатели сайта и Core Web Vitals;
  • поисковые роботы могут обработать не более 5-ти редиректов;
  • повышается риск возникновения циклических переадресаций, а они ведут к недоступности страницы.

Обнаружить множественные переадресации можно с помощью специальных сервисов:

Цепочки редиректов можно увидеть также в отчете Screaming Frog SEO Spider — он показывает число перенаправлений.

Циклические редиректы

Условный пример: вы настроили редирект со страницы A на страницу B, оттуда на страницу C. Но на странице C уже есть редирект на страницу A. Получается замкнутый круг переадресаций. Все URL в цепочке становятся недоступными для пользователей и поисковых систем.

Так и сломаться можно

Так и сломаться можно

На практике циклические переадресации часто возникают при путанице в правилах массового редиректа: страниц со слешем и без, с WWW и без и тому подобных.

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

Страницы с кодом 301 остались в карте сайта

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

Редирект ведет на 404 страницу

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

А сколько на вашем сайте таких дорог?

А сколько на вашем сайте таких дорог?

«Я все попробовал, но ничего не работает»

К сожалению, новичкам не всегда удается разобраться в настройке редиректов в .htaccess. На работоспособность изменений могут влиять:

  • другие, ранее настроенные переадресации. В том числе, не в .htaccess, а в PHP;
  • версия Apache-сервера;
  • директивы, которые прописал хостер в главном конфигурационном файле Apache и т. д.

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

В техническом задании на настройку редиректов опишите все нюансы задачи, например:

  • Нужна постоянная переадресация или временная?
  • Только одной страницы или нескольких? Есть ли общие фрагменты в URL этих страниц?
  • Нужно ли предусмотреть исключения — страницы, которые не должны подчиняться общему правилу?

Если знакомых проверенных специалистов нет, а давать доступ к файлам сайта незнакомым фрилансерам вы боитесь (не без оснований), обратитесь в агентство с хорошей репутацией. К примеру, можно заказать техническую поддержку сайта. Если поручить все специфические вопросы специалистам, синтаксис .htaccess можно будет выбросить из головы, как страшный сон, и заняться непосредственно бизнесом: продажами, рекламой.

Бонус: как с помощью 301 редиректа увеличить посещаемость сайта

До этого мы рассматривали ситуации, когда переадресация применяется как вынужденная мера для устранения ошибок: после удаления или переезда страниц, для «склеивания» появившегося дублированного контента и т. п.

Однако 301 редирект можно использовать и как полноценный инструмент оптимизации.

Способ первый: объединяем статьи

Допустим у вас в блоге есть 2 статьи на похожую тематику, или освещающие один и тот же вопрос, но с разных точек зрения. Можно объединить их: написать одну большую статью, в которой будет информация из обеих. И поставить 301 редирект со старых статей на новый URL.

Или разместить большую статью на одном из двух этих старых URL, если он подходит, а со второго поставить 301 редирект.

В итоге:

  • ссылочный вес и авторитет объединяемых страниц перейдет на новую;
  • поведенческие показатели вырастут — ведь объединенная статья полнее и лучше предыдущих;
  • profit! — вы получаете прирост трафика и позиций в поиске.

Для объединения, конечно же, нецелесообразно брать страницы, что и так дают отличный трафик и находятся в топе. Подойдут статьи, которые:

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

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

Способ второй: склейка сайтов

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

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

Примерная стратегия:

  1. Купить сайт, похожий на ваш по тематике.
  2. Выбрать на нем страницы с хорошим ссылочным весом и трафиком, актуальной темой.
  3. Сделать страницы с таким же контентом на своем сайте. В идеале дополнить и расширить его. Если у вас уже есть релевантные страницы — использовать их.
  4. Поставить 301 редирект с каждого такого URL купленного сайта на ваши страницы.
  5. Те URL купленного сайта, у которых слабые показатели ранжирования и посещаемости, можно направить на уже существующие релевантные страницы вашего сайта. Или удалить.
  6. Остальные страницы можно удалить, или в крайнем случае — сделать 301 редирект на вашу главную.

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

10 главных мыслей статьи

  1. В большинстве случаев оптимален 301 редирект. 302 и другие временные типы переадресаций настраивайте только если страница будет недоступна временно.
  2. Лучше всего настраивать переадресации через файл .htaccess.
  3. Если вы хотите, чтобы страница осталась доступна пользователям, но не индексировалась поисковой системой — используйте тег rel=«canonical», а не редирект.
  4. Перед изменениями обязательно сделайте резервную копию .htaccess.
  5. Располагайте директивы в .htaccess от частных к общим, используйте блок Ifmodule.
  6. Внедряйте и проверяйте редиректы по одному. Проверяйте, очистив кэш браузера или специальными сервисами.
  7. Избегайте цепочек переадресаций и циклических редиректов.
  8. Страница-донор и страница-акцептор долдны быть релевантны другу другу, иначе поисковые системы будут считать такой редирект ошибкой.
  9. Есть много готовых правил редиректов для разных случаев, часть из которых мы приводим в статье.
  10. 301 редирект можно использовать для склейки не очень эффективных страниц и сайтов и повышения роста трафика на страницу и позиций.
Оценить статью
14 ответов

Комментарии 4

Наталья Пелех Наталья Пелех
Написать комментарий
А есть способ отследить количество переходов по редиректу? Сколько посетителей ею воспользовались. Если через .htaccess настроено
Ответить
Екатерина Чекалина Екатерина Чекалина
В htaccess данные могут подгружаться из php как это часто сделано в битриксе и только в этом случае можно будет увидеть количество запрошенных переадресаций.
Ответить
Андрей Горяев Андрей Горяев
Написать комментарий
Поисковики вообще плохо относятся к редиректам. Они считают, что таким образом автор пытается скрыть какие-то моменты. Поэтому лучше ими не злоупотреблять без необходимости.
Ответить
Ирина И
Написать комментарий
Автор очень подробно и пошагово всё прописал. Даны объяснения необходимым терминам. Что называется "бери и делай". Добавила себе в закладки ссылку на эту статью, чтобы постоянно была под рукой.
Ответить
Написать комментарий
Популярные статьи автора
Узнайте стоимость продвижения сейчас
Выберите удобный способ связи:
Выберите удобный способ связи:
Введите Ваш номер телефона:
Введите адрес Вашего сайта:
Введите Ваше имя:
Нажимая кнопку «Получить предложение» вы соглашаетесь с Политикой конфиденциальности.
Введите Ваш Email:
Введите адрес Вашего сайта:
Введите Ваше имя:
Нажимая кнопку «Получить предложение» вы соглашаетесь с Политикой конфиденциальности.
Оперативно отвечаем в рабочее время: с 10:00 до 19:00
Оперативно отвечаем в рабочее время: с 10:00 до 19:00
Вы уже проголосовали
Возьмем ТОП вместе?
Здравствуйте, меня зовут
,
я представляю компанию
.
Со мной можно связаться по телефону
Со мной можно связаться по тел.
,
или по email
ник в телеграм
Спасибо!
Нажимая кнопку «Оставить заявку» вы соглашаетесь с Политикой конфиденциальности.
Цена лидов в различных нишах
Тематика Стоимость лида (Москва/Россия)
Отдых 500
Мебель 350
Оборудование 500
Бансковские услуги 500
Безопасность 500
Организация мероприятий, концерты, праздники 500
Недвижимость 500
Строительство и отделка 500
Грузоперевозки 500
Доставка еды 350
Юридические услуги 500
Бухгалтерские услуги 500
Пластиковые окна 500
Детские товары 350
Автозапчасти 350
Образование 500
Возьмем ТОП вместе?
Здравствуйте, меня зовут
,
У меня есть сайт
.
Со мной можно связаться по телефону
Со мной можно связаться по тел.
,
или по email
ник в телеграм
Спасибо!
Нажимая кнопку «Оставить заявку» вы соглашаетесь с Политикой конфиденциальности.
Оставить заявку сейчас
Ваше имя*
Введите адрес Вашего сайта:*
Введите Ваш номер телефона:*
Введите Ваш e-mail:*
Введите Ваш ник в телеграм:
Выберите интересующую услугу *
Нажимая кнопку «Оставить заявку» вы соглашаетесь с Политикой конфиденциальности.
Подпишитесь на рассылку
Не пропустите самое интересное из мира SEO и Digital. Только актуальные и самые крутые статьи.
Заявка успешно отправлена!
Наши сотрудники уже приступили к анализу Вашего сайта. Наш менеджер свяжется с вами в течение дня, спасибо!