© Discript 2018 - 2022

Что такое редирект и как его настроить

  1. Зачем нужна переадресация
  2. Алгоритм работы редиректов
  3. Когда не рекомендуется применять переадресацию
  4. Виды редиректов
  5. Типы реализации редиректов
  6. Настройка в .htaccess
  7. Настройка 301 редиректа в .htaccess
  8. Рекомендации по работе с редиректами
  9. Переадресация файла robots.txt
  10. Генераторы .htaccess
  11. Ошибки при настройке редиректов

Редирект (или перенаправление) — это переадресация пользователя с одного URL-адреса на другой. Например, при переходе по ссылке https://site/blog/ браузер автоматически перенаправит посетителя по адресу https://site/blog_new/.

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

Предположим на сайте есть категория https://site/catalog/dresses/ и данный раздел имеет товарные карточки, например https://site/catalog/dresses/item-123/. Для оптимизации бизнес-процессов есть задача сменить CMS и из-за технических особенностей адрес раздела должен измениться на https://site/catalog/women/dresses/. То если после смены URL-адресов не настроить редиректы пользователи сохранившие старые адреса, попадут на несуществующие страницы и увидят, подобное:

404 Ошибка
Страница с ошибкой 404

Чтобы все пользователи попали на нужные необходимо настроить редирект с https://site/catalog/dresses/ на https://site/catalog/women/dresses/. При этом нужно будет настроить редирект для всего раздела, так чтобы если пользователь введет адрес https://site/catalog/dresses/item-123/, он попал на страницу https://site/catalog/women/dresses/item-123/.

Настройка редиректа для вложенности
301 редирект директорий и вложености

Зачем нужна переадресация

Основная задача редиректа, перенаправить пользователя на страницу с актуальной информаций.

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

Редиректы рекомендуется настраивать, когда необходимо:

  • Изменить имя веб-ресурса;
  • Изменить структуру сайта,
  • Отключить ненужные разделы;
  • Удалить дубли и мусорные страницы;

Редирект для поискового продвижения

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

Продолжим на нашем примере со сменой CMS, когда наш адрес меняется с https://site/catalog/dresses/ на https://site/catalog/women/dresses/ страницу. Если данный редирект не настроить, то поисковые системы будут воспринимать страницу https://site/catalog/women/dresses/, как новую, а все накопленные характеристики страницы https://site/catalog/dresses/, пропадут. (Это касается всех страниц данного раздела). Что в свою очередь приведет к потере позиций и поискового трафика.

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

Рассмотрим наиболее популярные ситуации настройки редиректа при поисковой оптимизации сайта:

  1. Склеивание дублей страниц. Несколько дублей страниц объединяются в одну. После склейки останется только одна страница, которая будет присутствовать в результатах поиска. К дублям можно отнести:
    • Адреса без префикса https и с ним.
    • Адреса без префикса WWW и с ним.
    • Полные дубли страниц.
    • Страницы с адресов в верхнем и нижнем регистре. (Да, такие страницы ПС считают, как разные).
  2. Удаления разделов веб-сайта. Используется, если товар на сайте больше не продается или услуга уже не актуальна. Обычно для таких страниц настраивают 301-редирект на родительскую категорию, это позволяет сохранить факторы URL в рамках сайта.

Алгоритм работы редиректов

Рассмотрим подробнее базовый алгоритм работы редиректа на сервере:

  1. Пользователь пишет в адресную строку браузера: example.com/page01;
  2. Браузер, обратившись к серверу спрашивает данную страницу;
  3. Сервер, обрабатывает запрос по правилам, прописанным в настройках.
  4. Сервер фиксирует, что посетителя нужно перенаправить на страницу с WWW, и проверяет, что данная страница имеет код отличный от 30Х. (Пункты 3 - 4 могут повторятся несколько раз, до тех пор, пока сервер не подтвердит, что страница отдает код отличный от 30Х.)
  5. В результате сервер отправляет информацию браузеру и для пользователя отобразится содержимое страницы www.example.com/page01.

Важно! Не рекомендуется настраивать цепочку редиректов на 7 и более шагов. По нашим экспериментам после 7 шага поисковые системы начинают терять информацию о переадресованной странице.

Алгоритм работы редиректов
Процесс работы редиректа

Когда не рекомендуется применять переадресацию

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

  • «Клоакинг» - отображение разного контента для поисковой системы и пользователя.
  • «За обман мобильных пользователей» - данный фильтр можно получить за использование автоматического редиректа для посетителей с мобильных устройств.
  • «Дорвей» - один из видов поискового спама. Для этого создается сайт, основная цель которого в том, чтобы перенаправить пользователя на другой сайт.

Виды редиректов

Различается по двум показателям:

  1. Постоянность или временность перенаправления;
  2. Доступность старой страницы после изменения настроек.

Рассмотрим виды подробнее.

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

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

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

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

Для пользователя документ по старому адресу больше не доступен, а роботы поисковых систем увеличивают период для перехода страницы и со временем выкинут её из индекса.

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

301-редирект используется:

  1. Для удаления ненужной страницы из поиска и сохранения ее показателей на новой странице;
  2. Для удаления дублей. Это страница идентичная той, на которую идет настройка.
301 Redirect «Перемещена навсегда» (Moved Permanently)
Общий вид кода 301 «Перемещена навсегда» (Moved Permanently)

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

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

Для поисковых систем это сигнал, что страница ещё вернется и удалять её не нужно, а страницу акцептор индексировать не требуется. Хотя если редирект будет настроен продолжительное время, то ПС могут его обработать, как 301 код ответа.

302-редирект используется:

  1. Временное перенаправления трафика с одного домена на другой;
  2. Если данные часто меняются и необходимо показать пользователю его новую версию.

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

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

На практике код ответа 303 похож на 302, но он не обозначает перемещение запрашиваемого адреса. 303 код ответа сервера указывает что запрашиваемый ресурс находится по другому URL. Браузеру предоставляется только адрес. Он не кэшируется.

303-редирект используется: в интернет-магазинах для перенаправления людей со страницы где закончились товары на страницу с аналогичными характеристиками.

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

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

Этот вид редиректа помогает снизить нагрузку на высоконагруженных проектах и на больших сайтах, на которых ПС могут сканировать не приоритетные для нас страницы. Поэтому до нужного контента робот может не добраться.

Рассмотрим 2 примера.

Предположим на сайте есть 1 млн. страниц, но есть 3 условия:

  1. Поисковый бот за 1 раз может обойти не более 50.000 страниц.
  2. Сканирование продолжается не более N минут.
  3. При сканировании сайта поисковый бот начинает обходить сайт с главной страницы.

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

В этом случае нам и поможет код ответа 304. Когда наш сервер сообщает, что определенные страницы не изменялись с последнего сканирования и повторного сканирования она не требует. Это в свою очередь сообщает боту, что он может проверить другие страницы. Например, в первый раз бот обошел 50.000 страниц, ко второму сканированию изменились только 5.000 страниц, а 45.000 отдадут код 304. Значит во второе сканирование бот сможет получить актуальную информацию с 5.000 - обновленных страниц + 45.000 - страниц без изменения + 45.000 страниц, которые ранее бот не мог обойти. К 3-й попытке будет 5.000 - обновленных страниц + 90.000 - страниц без изменения + 45.000 новых страниц. И так итерацией за итерацией, бот обойдет весь сайт.

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

Важно! Данный редирект нужен не для всех проектов и нужно учитывать следующие моменты:

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

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

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

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

Код ответа указывает, что клиент должен использовать определенный прокси сервер. Сейчас это неактуально. Код остается зарезервированным.

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

Код ответа указывает, что сайт доступен по другому адресу. Страница не кэшируется. ПС не добавляют в индекс новый адрес.

Создан для уточнения 302. Единственное отличие — метод передачи запроса. 307 редирект сохраняет метод отправки (GET, POST), который указывает что страницу не нужно кешировать, а 302 — нет. 303 редирект работает по методу GET

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

Это аналог 301-редиректа с разницей, что не позволяет заменить метод запроса с POST на GET. Данный метод может использоваться для настройки перенаправления на странице с 2-3 формами, данные в которых передаются методом POST. Например, Google Drive использует код ответа 308 чтобы показать, что передача информации прервана.

Важно! Данный метод экспериментальный и может не корректно отрабатывать.

Типы реализации редиректов

Рассмотренные виды редиректов отличаются друг от друга по функционалу. Существует и другой фактор классификации — техническое исполнение. По нему выделяются такие варианты: htaccess, PHP, JavaScript и HTML-редиректы. Рассмотрим их подробнее.

Htaccess

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

Подробную работу с данным файлом разберем в разделе.

PHP

PHP — серверный язык программирования. Переадресация происходит не в исходном коде страницы, а скрипте на сервере. Работает медленнее чем редирект через файл .htaccess. Правила прописываются в index.php. Удобен если перенаправление делается выборочно, где много правил для отдельных страниц.

Настройка

Для создания редиректа применяется функция header(). Ее синтаксис: void header ( string $string [, bool $replace = true [, int $http_response_code ]] ). Рассмотрим на примере. Есть два файла redirect.php, и redirect2.php. В первом пропишите код:

		
			<? php header('Location: http://localhost/ redirect2.php '); ?>
		
	

Во втором файле пропишите код: echo "Привет! Вы находитесь в файле redirect2.php";

Перейдя по ссылке первого файла redirect.php, произойдет перенаправление.

Вид перехода по 301 редиректу
Переход по 301 редиректу

По умолчанию в заголовок передается редирект 302. В поисковые системы такое перенаправление может затянуться.

Рассмотрим пример принудительной перезаписи с 302 на 301:

		
			<?php header('Location: http://localhost/redirect2.php',true, 301); ?>
		
	

Такое перенаправление возможно в два этапа.

  1. Перезапись кода состояния;
  2. Переход на новый адрес.
		
			<?php  header('HTTP/1.1 301 Moved Permanently'); 
			header('Location: http://redirect2.php');  ?>
		
	

Например. Перенаправление в зависимости от роли пользователя, определяется во время аутентификации. Значение для обработки записывается в переменную $who:

		
			<?php
	
				switch ($who){
					case "user": $redirect_url = "/blog.html"; break;
					case "author": $redirect_url = "/author.html"; break;
					case "admin": $redirect_url = "/admin.html"; break;
					default: $redirect_url = "/registration.html";
				}
	
			header('HTTP/1.1 200 OK');
			header('Location: http://'.$_SERVER['HTTP_HOST'].$redirect_url);
			exit();
	
			?>
		
	

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

Код HTML:

		
			Нажми меня
		
	

Код файла redirect3.php:

		
			<?php
				header('Refresh: 5; url=http://rambler.ru/');
				echo "Привет!Через 5 секунд вас выкинет на Рамблер))";
			?>
		
	
Процесс 302 редиректа
Переход по 302 редиректу

JavaScript

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

Способ не работает, если в браузере отключен JavaScript.

Как пользоваться

Пропишите код в одном файле с расширением js и добавляйте его на каждой странице прописав:

		
			<script type="text/javascript" src="redirect.js"></script>
		
	

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

		
			<script type="text/javascript">
				location="https://yandex.ru";
			</script>
		
	

Перенаправление сработает на сайт yandex.ru.

Редирект на другой сайт с задержкой пять секунд:

		
			<script> type="text/javascript">
				setTimeout(function(){
				location="https://yandex.ru";
				}, 5000);
			</script>
		
	

HTML

Создается в индексном файле внутри тегов

метатегом Refresh. Происходит в исходном коде страницы. Это означает что редирект производится непосредственно браузером.

Например, перенаправление настроено с index.html на new_index.html. Работает по схеме:

  1. Браузер запрашивает файл индексной страницы (index.html) на сервере;
  2. Сервер находит index.html и отвечает на запрос браузера;
  3. Браузер открывает индексную страницу. Считывает html-код. Находит строку с редиректом, затем — название нового URL;
  4. Веб-браузер отправляет на сервер запрос где хранится new_index.html;
  5. Сервер находит эту страницу. Отвечает на запрос браузера;
  6. Веб-обозреватель открывает ее.

Мета-тег выглядит так:

		
			<meta http-equiv="refresh" content="0;URL=http://site.ru" />
		
	

Где:

  1. content — время ожидания перенаправления в секундах. Пропишите 0, чтобы перенаправление происходило мгновенно;
  2. URL — ссылка на новую страницу.

Как настроить редирект

Откройте index.html в нем пропишите:

		
			<head>
				<meta http-equiv="refresh" content="0;URL=http://site.ru" />
			</head>			
		
	

Если на сайте установлен SSL-сертификат, укажите https:// вместо http://.

Получится следующее:

Настройка редиректа в index.html
Как настроить редирект в index.html

Настройка в .htaccess

Рассмотрим подробнее где расположен, как создать (если нет на хостинге) и настроить перенаправление в файле .htaccess.

Где найти файл .htaccess и принципы работы с ним

Данный файл используется только на серверах Apache. В зависимости от HTTP сервера могут использоваться: .config, .http, access.conf.

Файл .htaccess находится в корне сайта.

Как создать .htaccess

Чтобы создать файл, выполните следующие шаги:

  1. Откройте любой текстовый редактор, создайте пустой файл с расширением .txt;
  2. Переименуйте файл в .htссess, где "htссess" является расширением файла".
  3. Файл готов.

С чего начать файл

Перед правилом пропишите три директивы:

  1. RewriteEngineOn. Активирует механизм преобразование модуля mod_rewrite;
  2. Options+FollowSymLinks. Данный параметр позволяет в корневом каталоге иметь символическую (в ней вместо пользовательских данных прописан путь к файлу, открываемому при обращении к этой ссылке) ссылку указывающую на другую директорию;
  3. RewriteBase.Часть URL, которая дописывается вначале адресов, созданных после преобразования.В основном в них указывается слеш (/). Это означает что URL начинаются от корня сайта.

Важно. Прописывайте их вначале файла .htaccess, чтобы не повторять перед правилами.

Директивы

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

Например, необходимо разрешить доступ к веб-сайту только с определенного IP. В htaccess пропишите:

		
				Order allow deny
				Deny from all
				Allow from 192.112.12.198		
		
	

Где директива:

  1. Order. Далее указывается порядок выполнения команд;
  2. Deny. Запрет доступа всех пользователей к веб-сайту;
  3. Allow. За командой прописывается IP адрес попадающий в список исключений и открывающий ему доступ к директивам и файлам.

Флаги

После директивы RewriteRule прописываются флаги. Это два флага — [L,R=301]:

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

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

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

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

Комментарии

Строки в файле, перед которыми находится знак решетки (#) не учитываются и не выполняются сервером. Оставляйте в них комментарии к правилам. Что это за команда и для чего создавалась. Используйте решетку для отключения неиспользуемых команд.

Файл .htaccess для редиректов
Внешний вид файла .htaccess

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

Это название веб-сайта на русском языке. Например. телефон.рф. Такие адреса легче записывать в поисковой строке Яндекса или Google. Кириллические домены выбирают для веб-сайтов, ориентированных на русскоговорящую аудиторию.

Например, владельцы доменов на латинице регистрируют аналогичный домен на кириллице и настраивают перенаправление с русского домена на английский. Так, если прописать в адресную строку обозревателя домен «яндекс.рф», откроется «yandex.ru».

Чтобы настроить такой редирект, необходимо кириллические адреса перевести в punycode. И использовать в .htaccess URL формата punycode.

Для перевода используйте https://www.reg.ru/web-tools/punycode

Кириллические адреса в формате punycode для редиректа
Перевод кириллических адресов в формат punycode на reg.ru

Блок IfModule

Если на сервере нет модуля для редиректа, например mod_rewrite, это может вызывать ошибки. В исходном коде с правилами для 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, а редирект не сработал. Что делать? Посмотрите, какая установлена версия сервера Apache, найдите официальное руководство, посмотрите, как должны быть прописаны директивы.

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

Рассмотрим практические примеры. Адреса сайтов измените на свои.


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

Вариант 1:

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

Вариант 2:

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

Перенаправление сайта без WWW на URL с WWW

Вариант 1:

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

Вариант 2:

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

Переход на HTTPS с HTTP

Вариант 1:

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

Вариант 2:

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

Вариант 3:

		
			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]				
		
	

Вариант 4:

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

301-редирект с HTTPS-версии на HTTP

		
			RewriteCond %{HTTPS} "on"
			RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI}[R=301,L,QSA]
		
	

Устраняет дубли URL с HTTPS в индексе ПС.


Перенос сайта на версию с HTTPS

		
			RewriteCond %{SERVER_PORT} ^80$ [OR]
			RewriteCond %{HTTP} =on
			RewriteRule ^(.*)$ https://domain.ru/$1 [R=301,L]
		
	

Редирект с страницы со / на URL без него, и наоборот

Рассмотрим оба способа


На URL без слеша

Вариант 1:

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

Вариант 2:

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

На URL с “/” в конце

Вариант 1:

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

Вариант 2:

		
			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. Попробуйте один из вариантов:

		
			Redirect301 /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]
		
	

В ряде случаев полезна переадресация через RewriteRule

Как перенаправлять людей с разных адресов на выбранную страницу? Используйте директива RewriteRule. Она прописывает правила перехода. Синтаксис такой:

RewriteRule Шаблон Подстановка [коды]

  • При внешнем редиректе меняется урл адреса в строке браузера — «[R=301,L]»
  • При внутреннем — не меняет урл адреса в строке браузера — «[R=301]» или «[L]RewriteRule ^dir /dir-new/$1 [R=301,L]

301-редирект для страницы с параметрами

При редиректе ссылок с GET параметрами стандартные правила в htaccess не работают. К этим правилам относят, например,

		
			Redirect 301 /page.php?id=1 /page/
		
	

или:

		
			RewriteRule ^page.php?id=1 /page/ [R=301,L]
		
	

Чтобы настроить редирект на страницу с другими параметрами, используйте директиву RewriteCond:

		
			RewriteEngine On
			RewriteCond %{QUERY_STRING} ^id=1$
			RewriteRule ^(.*)$ http://mysite.com/page/? [R=301,L]
		
	

Более подробный вариант:

		
			RewriteEngine On
			RewriteCond %{REQUEST_URI} /page.php
			RewriteCond %{QUERY_STRING} ^id=1$
			RewriteRule ^(.*)$ http://mysite.com/page/? [R=301,L]
		
	

Для создания массового редиректа, то воспользуемся регулярным выражением, где (.*) выбирает любое значение:

		
			RewriteCond %{QUERY_STRING} ^id=(.*)$
			RewriteRule ^(.*)$ http://mysite.com/page/? [R=301,L]
		
	

Переадресация с простого url на ссылку с get-параметрами:

		
			RewriteCond %{REQUEST_URI} /page.php$
			RewriteRule ^(.*)$ https://mysite.com/newpage?id=1[R=301,L]
		
	

Еще один вариант:

		
			RewriteCond %{QUERY_STRING} ^(?!id)
			RewriteRule /page.php$ /newpage?id=1 [L,R=301,QSA]
		
	

301-редирект со страницы без заданного параметра в корень

Если адрес имеет вид: http://www.site.ru/?abc, то для перенаправления подойдет последовательность строчек:

		
			RewriteCond %{QUERY_STRING} ^abc$ [NC]
			RewriteRule^$ /? [R=301,L]
		
	

301-редирект для выбранного файла

Переадресация с адреса http://www.site.ru/dir/ должна идти так, чтобы страница http://www.site.ru/dir/index.php?IBLOCK_ID=1 открывалась по старому адресу. Пропишите спецсимвол $ в правиле.

		
			RewriteRule^dir/$ http://www.site.ru/new-dir/ [R=301,L]
		
	

Смена страниц с html расширения на php расширение

Пропишите какой код:

		
			RedirectMatch301 (.*)\.html$ http://www.new-site.ru$1.php
		
	

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

Это страница (файл), открывающаяся по умолчанию, когда пользователь делает запрос к любой директории. Например, прописав в адресной строке браузера адрес http://site.com/iPhone, откроется индекстый файл отвечающий этой директории. Если в директории iPhone нет индексной страницы, отобразится уведомление про ошибку 403.

Существуют такие типы индексных файлов: index.html, index.htm, index.php, index.phtml, index.shtml, default.htm или default.html. Чтобы задать тип индексной страницы, пропишите порядок загрузки типов файлов, лежащих в корне директории: DirectoryIndex index.html index.php index.htm index.shtml Другой пример. Если прописать в адресной строке обозревателя http://site.com/iPhone, откроется индексная страница index.html. Если нужно отобразить другую, например, iPhone.php, в .htaccess пропишите:

		
			DirectoryIndex iPhone.php
		
	

Перенос картинок img на поддомен

Представьте. Вы едете один в машине. Она едет легко и быстро. А если загрузить багажник и посадить еще три человека. Будет ли такая же легкость при езде? С веб-ресурсом похожая история. Перенесите картинки на поддомен, пропишите такой код:

		
			RewriteRule ^img/(.+)\.jpg$
			http://img.domain.ru/$1.jpg [R=301,L]
		
	

Редирект с индексной страницы php на саму папку

Напишите такой код:

		
			RewriteCond%{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
			RewriteRule ^index\.php$ http://www.site.ru/ [R=301,L]
		
	

Для всех индексных страниц на сайте:

		
			RewriteRule ^(.*)index\.php$ http://www.site.ru/$1 [R=301,L]
		
	

Переход с поддомена на основной адрес

Если вы скопируете веб-сайт с поддомена test.site.com на домен второго уровня site.com ПС будут считать их за рзные сайты. Послений даже может попасть под фильтр Яндекса или Google. Роботы ПС посчитают новый веб-ресурс копией старого. Чтобы не потерять трафик и не попасть под санкции ПС используйте переход с поддомена. Пропишите такой код:

		
			RewriteCond %{HTTP_HOST} ^test.site.com$ [NC]
			RewriteRule ^(.*)$ http://site.com%{REQUEST_URI} [R=301,NC,L,QSA]
		
	

Редирект для файла в разных папках

		
			RewriteRule [^abc]/unique-file.html /unique-file.html[R=301,L]
		
	

Код настроит 301-редирект со директорий типа http://site.ru/***/uniqe-file.html на один файл в корне /unique-file.html. Используйте его при редактировании сайта и изменении ссылок.

Создание ЧПУ-копии динамической страницы

Если требуется создать ЧПУ-копию какой-либо динамической страницы, то это можно также реализовать с помощью .htaccess

		
			RewriteRule ^testovyi/test/?$/studio/news/detail.php?ID=230354&PAGEN_2=11 [NC,L]
		
	

Код позволяет создать копию страницы с относительным адресом /studio/news/detail.php?ID=230354&PAGEN_2=11 по адресу /testovyi/test/


Настройка 403 кода ответа сервера для реф-спама (301-редирект для спама по REFERER) для списка ресурсов

Настройка позволяет отклонить спамный реферальный трафик с ресурсов по заголовку HTTP_REFERER.

		
			RewriteCond %{HTTP_REFERER} ref-spam-site.ru [NC,OR]
			RewriteCond %{HTTP_REFERER} another-ref-spam.ru [NC]
			RewriteRule.* - [F]
		
	

Указание пути к файлу 404 ошибки с помощью .htaccess

Путь к файлу указывается с помощью следующей строчки:

		
			ErrorDocument404 /404-for-me.php
		
	

Настройка редиректа для выбранных USER_AGENT'ов

Пропишите какой код:

		
			RewriteCond%{HTTP_USER_AGENT}
			(iPad|ipad|iphone|iPhone|ipod|iPod|android|midp|
			j2me|symbian|series\ 60|symbos|windows\mobile|
			windows\ ce|ppc|smartphone|blackberry|mtk|bada|
			windows\ phone) [NC]
			RewriteRule (.*) http://mobile.site.ru/ [L,R=301]
		
	

Настройка редиректа для всех роботов ПС

Представлен список их USER_AGENT'ов:

		
			RewriteCond%{HTTP_USER_AGENT} !(accoona|ia_archiver|
			antabot|ask\ jeeves| baidu|dcpbot|eltaindexer|
			feedfetcher|gamespy|gigabot|googlebot |gsa-crawler|
			grub-client|gulper|slurp|mihalism|msnbot|
			worldindexer|ooyyo|pagebull|scooter|w3c_validator|
			jigsaw|webalta|yahoofeedseeker|yahoo!\slurp|
			mmcrawler|yandexbot|yandeximages|yandexvideo|
			yandexmedia|yandexblogs|yandexaddurl|yandexfavicons|
			yandexdirect|yandexmetrika|yandexcatalog|yandexnews |
			yandeximageresizer) [NC]
			RewriteRule (.*) http://no-search.site.ru/ [L,R=301]
		
	

Рекомендации по работе с редиректами

Рассмотрим основные рекомендации при работе с редиректами.

Старайтесь не допускать переадресаций внутри веб-ресурса. Битые внутренние ссылки обязательно исправляйте.

Проверка правильности переадресации

Если после перенаправления не получили нужный код и сервис не показал информацию по редиректам, тогда надо перепроверить код. Используйте сервис для проверки кода ответа https://tools.discript.ru/http-code/:

Проверка правильного настроенного редиректа
Проверка правильности переадресации на tools.discript.ru

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

Перед созданием переадресации или любыми изменениями в настройках веб-сайта создайте Backup. Тогда если после внесенных изменений веб-сайт перестанет работать, вы сможет вернуть первоначальные настройки из резервной копии. Создайте его на сервере. Переименуйте, например в .htaccess-backup. Также данный файл можно загрузить на ПК.

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

Если нужно настроить 3-4 переадресации, создавайте и запускайте их по одной. После создания правила посмотрите, чтобы все работало. Далее создайте новое правило. Иначе при возникновении ошибки трудно определить, какая директива ее вызвала.

Переадресация файла robots.txt

При изменении домена переход настраивается для каждой страницы и файла robots.txt на сайте. Чтобы склейка доменов в ПС прошла быстрее, не переадресуйте robots.txt на старом домене.

Генераторы .htaccess

Вы можете сгенерировать правила с помощью сервисов, а полученный результат добавить в файл .htaccess.

Алгоритм действий:

  1. Выберите редирект;
  2. Укажите дополнительные параметры;
  3. Получите готовый код. Копируйте его и добавляйте в конфигурационный файл.

Рекомендуемые сервисы:

  • Htaccess.ru;
  • Aleydasolis.com;
  • Htaccessredirect.net.
Генерация .htaccess для редиректов
Генератор .htaccess на htaccess.ru

Ошибки при настройке редиректов

Настраивая переадресацию может возникнуть шесть ошибок. Рассмотрим их подробнее.

Нерелевантная страница

При 301-редиректе происходит передача авторитарности на новую страницу. Если переход настроен на нерелевантную (новая информация, товар), ПС посчитают такой переход неправильным.

Что делать если на веб-сайте больше нет страницы со старой информацией, а нужно настроить переадресацию? Настройте редирект на подходящие по смыслу URL.

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

Переходы происходят 2-3 раза. Если страница А удалена, и стоит 301 редирект на страницу В, с которой стоит переход на С. Человек чтобы попасть на страницу А перенаправляется на В с потом на С. Работы ПС не понимают зачем так делается. Поэтому на странице А редирект поставьте на С.

Наши внутренние эксперименты доказали, что редиректы работают до 7-ого уровня переадресации. Далее поисковые системы теряют информацию о странице.

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

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

Циклические редиректы
Принцип циклического редиректа

Пользователь не сможет пользоваться сайтом и будет видеть белый экран.Это отрицательно скажется на поисковой выдаче. Роботы ПС посчитают такой сайт небезопасным и будут препятствовать переходу пользователей на него. Чтобы продвижение было эффективным. Их не должно быть на сайте. Возможная причина их появления — вирусы.

Как найти циклические редиректы

Используйте специализированные площадки. Например, Screming Frop SEO Spider. Он сканирует весь сайт.

Screaming Frog SEO Spider
Главный экран Screaming Frog SEO Spider

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

URL с которого установлен 301 редирект удалите из файла sitemap.xml, чтобы робот ПС не сканировал их Такие страницы тоже можно найти с помощью.Screming Frop SEO Spider.

Перенаправление идет на 404 страницу

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

Другие статьи

Отправьте заявку и уже завтра мы начнем работы.

Обязательное поле для заполнения

Обязательное поле для заполнения

Обязательное поле для заполнения

Обязательное поле

Обязательное поле для заполнения

Обязательное поле для заполнения

Обязательное поле

Спасибо за обращение!
В ближайшее время мы с вами свяжемся.

Далее

Обязательное поле для заполнения

Обязательное поле для заполнения

Укажите предпочтительные каналы связи:

ТелефонWhatsAppTelegram

Обязательное поле