Редиректы являются неотъемлемым элементом технической оптимизации сайта, с которым время от времени сталкивается абсолютное большинство вебмастеров и SEO-специалистов. Если вы ранее не использовали редиректы и не знаете, с какой стороны к ним подступиться, это руководство предназначено именно для вас. В рамках одной статьи мы собрали список основных редиректов и примеры их использования, а также перечень потенциальных ошибок и проблем, которые могут возникнуть вследствие неправильной настройки редиректов.
Что представляет собой редирект
Редирект — механизм автоматической переадресации пользователей с одного URL на другой. Чаще всего переадресация реализуется на стороне сервера при помощи специальных инструкций в серверных файлах-конфигураторах. Для сайтов на серверах Apache используется файл .htaccess; для тех, что работают на nginx, — nginx.config. Также переадресацию можно настроить с помощью PHP, HTML и JavaScript.
Какими бывают редиректы и когда их использовать?
Всего существует 10 различных видов редиректов, включая Meta Refresh. Но на практике распространены случаи использования всего нескольких.
301 Moved Permanently
301 редирект — абсолютный лидер по частоте использования. Он применяется для постоянной переадресации и передает ссылочный вес от начального адреса к конечному URL по аналогии с обычными ссылками.
301 редирект используется для нескольких целей:
- Постоянная переадресация с адресов уже несуществующих или неактуальных страниц.
- Перенаправление на корректный адрес после переезда или редизайна сайта.
- «Склейка» (объединение двух адресов в индексе поисковых систем) дубликатов страниц, включая полные копии, доступные по разным адресам; идентичные версии одной и той же страницы с разными протоколами (HTTP и HTTPS), префиксом www. и без него, а также страницы с закрывающими слешами в URL-адресах и без них.
- Перенаправление на файл с измененным расширением.
К примеру, 301 редирект, отвечающий за перенаправление с адресов с префиксом www. на адреса без префикса, выглядит следующим образом:
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]
Если же нужно выставить редирект со страниц с GET-параметрами на адреса без них, следует прописать в .htaccess следующий код:
RewriteCond %{QUERY_STRING} id=(\d+) [NC]
RewriteRule .* /page/%1/? [R=301,L]
302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)
302 редирект используется для временной переадресации и чаще всего настраивается на этапе тестирования новых страниц и редизайна сайта. Страницы, с которых выставлен 302 редирект, не «склеиваются» с конечным URL, то есть они продолжают независимо индексироваться и существовать в индексах поисковых систем. С этой особенностью 302 редиректа связана ошибка, часто допускаемая неопытными SEO-специалистами. Суть ее заключается в том, что для устранения дублей страниц и индексации только одного корректного URL используется не 301, а 302 редирект, из-за которого в индексе возникают крайне нежелательные дубли.
302 редирект передает ссылочный вес так же, как и 301. Отметим отдельно, что в зависимости от версии HTTP код ответа может отличаться — 302 Moved Temporarily в случае с HTTP 1.0. и 302 Found на сайтах с HTTP 1.1.
Пример использования 302 редиректа — временное перенаправление пользователя на страницу распродажи или акции без изменения изначальной страницы товара/услуги. Выглядеть он будет следующим образом:
Еще один распространенный пример — перенаправление на мобильную версию сайта, которая находится на выделенном поддомене. Так как в данном случае важна индексация обеих версий, то 302 редирект подходит для этой цели как нельзя лучше. Выглядеть он будет так:
chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|
cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|
wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|
kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) [NC]
RewriteCond %{HTTP_HOST} site.com
RewriteRule ^$ http://m.site.com/ [R=302,L]
307 Moved Temporarily (HTTP 1.1)
Как и 302, 307 редирект используется для временной переадресации и не предполагает «склейки» URL. Ключевое отличие от 302 Moved Temporarily заключается в том, что при помощи 307 редиректа вы можете сообщить поисковикам, что ваш сервер совместим с HTTP 1.1, а также что в кешировании конечной страницы редиректа нет необходимости.
В качестве примера можно привести перенаправление на страницу авторизации, которое будет производиться в определенных условиях:
RewriteCond %{HTTP_HOST} ^airbrake.io$
RewriteCond %{REQUEST_METHOD} POST
RewriteRule ^(.*)$ http://airbrake.io/login$1 [R=307]
Пример временного 307 редиректа на другой домен:
RewriteCond %{HTTP_HOST} ^old.site$
RewriteRule (.*)$ http://new.site/$1 [R=307,L]
Прочие виды редиректов
Ниже вы можете найти краткое описание прочих видов редиректов, которые на практике встречаются весьма редко, но могут вам пригодиться в особых ситуациях.
300 Multiple Choices
Редирект со множественным выбором предполагает автоматический или ручной выбор одного из вариантов перенаправления. Самый показательный пример — переход на одну из нескольких доступных языковых версий сайта. Используется довольно редко.
303 See Other
Работает по аналогии с 302 временным редиректом, но отличается по методу запроса. Запрещает кеширование конечного адреса редиректа.
304 Not Modified
304 редирект сообщает браузеру о том, что с момента последнего визита содержимое страницы не изменилось и его можно подгрузить из локального кеша.
305 Use Proxy
В случае с 305 Use Proxy браузер получает информацию о том, что для перехода на конечный адрес требуется прокси, адрес которого передается в одном из заголовков самого редиректа. Получив подобный ответ, браузер делает повторный запрос уже с использованием указанных прокси.
Как правильно настраивать редиректы
Чтобы обеспечить максимально корректную работу редиректов на своем сайте, вам нужно учесть ряд нюансов, которые напрямую влияют не только на восприятие сайта поисковиками, но и на уровень доверия и удобства пользователей. Ниже приведен список основных рекомендаций, которых следует придерживаться при настройке редиректов.
Когда не стоит делать редиректы
- Не выстраивайте редиректы на страницы с уже имеющейся переадресацией. Делайте исключительно прямое перенаправление, чтобы не создавать цепочек. Это же касается и связки Канонический атрибут + Редирект. Не рекомендуется выставлять атрибут rel=canonical на URL с редиректом, а также делать редирект на канонизированную страницу.
- Не используйте редирект там, где уместнее использовать rel=canonical. Если у вас есть две страницы с почти идентичным содержанием, это не означает, что их непременно нужно склеивать. Вполне возможно, будет лучше просто указать поисковым роботам на приоритетный для индексации URL, но оставить на сайте обе страницы.
- По возможности не выставляйте редиректы на страницы, которые существенно отличаются от изначальных. Если поисковый робот обнаружит ощутимую разницу между содержимым начального и конечного URL, поисковик может заподозрить вас в недобросовестных манипуляциях. Это, в свою очередь, негативно скажется на SEO отдельно взятых страниц и репутации сайта в целом.
- Не используйте редиректы для служебных файлов во время переезда. Будьте осторожны с переадресацией для служебных файлов: к примеру, редирект для файла robots.txt может повлечь за собой проблемы с его обработкой поисковыми роботами.
Что следует учитывать при создании редиректов
- Тип редиректа должен соответствовать своему назначению. Например, вам необходимо выставить постоянный редирект, но по незнанию или банальной невнимательности вы воспользовались одним из временных.
- Конечный URL должен быть доступен для индексации. Если вы хотите «склеить» разные адреса при помощи редиректов и добиться замены одного из них в индексе, конечный URL должен быть доступен для поисковых роботов и отдавать код ответа 200 OK.
- Старайтесь сохранить старую структуру ссылок. Если вы планируете переезд на новый домен и настройку соответствующих редиректов, постарайтесь сохранить старую структуру URL, чтобы начальный адрес, к примеру, имел вид olddomain.com/page1, а конечный — newdomain.com/page1.
- Старайтесь настраивать редиректы исключительно на стороне сервера. Все прочие методы используйте лишь в крайнем случае.
- Учитывайте, что индексация и «склейка» новых URL не происходит мгновенно. Если на предыдущем домене или старой CMS у вас был относительно скромный трафик, индексация адресов редиректов может занять довольно много времени.
- Убедитесь, что редиректы ведут на страницы с кодами ответа 200. Код ответа 200 OK — обязательное условие для индексации, а также нормальной и быстрой «склейки» страниц поисковыми системами. Если код будет 4хх или 5хх, то это будет противоречить самой сути редиректа. В случае с 3хх кодом ответа сервера у вас получится цепочка редиректов.
Как выяснить, нет ли на сайте проблем с редиректами
Чтобы выяснить, нет ли на вашем сайте описанных выше проблем, воспользуйтесь краулером и просканируйте весь сайт для анализа имеющихся редиректов. Например, если вы используете Netpeak Spider, вам следует выполнить следующие действия:
- Откройте программу и установите все настройки по умолчанию.
- Впишите адрес сайта в соответствующем поле и запустите сканирование.
- После завершения сканирования перейдите на боковую панель и откройте вкладку «Отчеты» → «Ошибки». Там вы увидите сгруппированные по уровню критичности ошибки. Большинство проблем, связанных с редиректами, будут высвечиваться как высоко критичные.
Программа идентифицирует следующие типы ошибок:
- битый редирект;
- бесконечный редирект;
- максимальное количество редиректов;
- редирект, заблокированный в robots.txt;
- редиректы с неправильным форматом URL;
- refresh редирект;
- редирект на внешний сайт.
- Кликните по названию ошибки, чтобы увидеть список URL с соответствующей проблемой.
- При необходимости выгрузите отфильтрованные результаты, нажав кнопку «Экспорт» над таблицей слева. Также вы можете выгрузить один из удобных отчетов по редиректам, выбрав соответствующую опцию в меню «Экспорт».
Коротко о главном
Всего насчитывается 10 видов редиректов, но лишь некоторые из них могут похвастаться практическим применением. Это относится к следующим видам:
- 301 Moved Permanently, который используется для постоянной переадресации и «склейки» страниц в индексе.
- 302 Found/Moved Temporarily и 307 Moved Temporarily, необходимые для временного перенаправления.
При построении редиректов необходимо придерживаться ряда базовых рекомендаций:
- Следует использовать тот тип редиректа, который соответствует своему назначению.
- Если конечный URL переадресации должен быть проиндексирован, его нужно сделать доступным для индексации поисковыми роботами.
- Желательно сохранять изначальную структуру ссылок при переезде, чтобы у начального и конечного URL отличался разве что домен.
- В большинстве ситуаций следует использовать серверный редирект.
- Следует избегать появления цепочек редиректов, а также цепочек, состоящих из редиректов и атрибутов rel=canonical.
- Важно следить, чтобы конечные адреса не отдавали коды ответа 4xx и 5xx.
- Прежде чем ставить редирект, следует определиться, нужен ли он в принципе и не лучше ли воспользоваться атрибутом rel=canonical.
- Важно соблюдать осторожность с переадресацией служебных файлов.
- Не стоит без необходимости ставить редирект на страницу, которая существенно отличается от изначальной.