Главное Свежее Вакансии Образование
5 641 3 В избр. Сохранено
Авторизуйтесь
Вход с паролем

Подробная инструкция по редиректам: когда и как их использовать

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

Что такое редиректы?

SzfrZ4S.png

Редиректы — это способ перенаправлять пользователей сайтов на URL, отличный от того, что они запросили. Дубли страниц ухудшают ранжирование сайта, а редиректы помогают с ними бороться.Ещё их используют когда нужно создать новую страницу взамен уже существующей и при этом сохранить позиции и трафик. Существует 9 видов редиректов, но в SEO-практике активно применяются лишь три из них:

  • 301 Moved Permanently (постоянный редирект) — указывает, что документ перенесён на новый URL навсегда. Когда SEO-специалисты или разработчики говорят о редиректе, они почти всегда имеют в виду 301 редирект. Старый адрес исчезает из выдачи, его место с сохранением позиций занимает новый.
  • 302 Found, 302 Moved Temporarily (найдено, перемещено временно) — документ перенесён временно, например, переводит пользователя на страницу акции (распродажи), не меняя содержимое старой страницы. При этом в выдаче остается старый адрес страницы, ведь на новый она перемещена временно.
  • 307 Temporary Redirect (временный редирект) — запрашиваемый документ на короткое время доступен по другому URL с сохранением метода передачи запроса (GET, POST) В целом выполняет ту же задачу что и 302 редирект.
По словам Джона Мюллера (John Mueller), Google может не делать различий между кодами ответов 301 и 302 — все варианты передают 100% ссылочного веса и PageRank от старого адреса к новому. Поэтому если Google решит, что вы установили 302 редирект по ошибке, он будет воспринимать его как 301.

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

1. Делайте редиректы только на релевантные страницы, со статусом 200 (OK).Чем более релевантна страница акцептора (та что принимает редирект) странице донору, тем быстрее они склеятся и тем больше веса она передаст.

2. Не используйте редирект там, где лучше поставить rel=canonical. Если контент страниц дублируется, но вам важно оставить страницы доступными для пользователей, используйте rel=canonical вместо редиректа. Например, если есть несколько версий контента (для печати, для мобильных,)

3. Не используйте редиректы для файла robots.txt. Этот совет в большей мере касается ПС Яндекс — для нее важно, чтобы при смене домена или переезде на защищенный протокол старый robots.txt был доступен роботам — так быстрее происходит склеивание доменов.

4. Избегайте двух, трёх и более редиректов подряд. Каждый новый редирект — это потеря времени загрузки, лишняя нагрузка на сервер и возможная потеря передаваемого веса страницы.

5. В файле .htaccess вначале используйте переадресации страниц с более высоким уровнем вложенности, например:

  • сначала редирект с site.com/category-1/subcategory-1/ на site.com/category-1/subcategory-2/;
  • затем с site.com/category-0/ на site.com/category-0;
  • и последними — глобальные правила типа редиректа всех страниц без «/» на страницы с «/».

На больших ресурсах с множеством редиректов несоблюдение этого правила ведёт к возникновению страниц с 404 ошибкой.

6. Браузеры кешируют редиректы — чтобы проверить их работу, сбрасывайте кеш или используйте специализированные сервисы.

Важно!Хотя ссылочный вес и передается в полной мере, при массовом применении редиректов, например, при переезде на https, возможно проседание позиций и трафика страниц на 10-15%, с последующим восстановлением в течение 2-4 недель. Некоторые seo-специалисты, чтобы исключить возможность проседания трафика, советуют сначала настраивать 302 редирект, а после появления в выдаче большинства новых страниц — менять его на 301. Сразу предупреждаем, что такое использование 302 редиректа идёт вразрез с рекомендациями Google, но никто не запрещает вам экспериментировать :)

Массово проверить статус страниц сайта можно, используя программы для аудита сайта Netpeak Spider, SEO Screaming Frog и сервис Serpstat.

b_5a034dbe6eea8.jpgБыстрее всего найти рабочие и неверно настроенные редиректы можно в Serpstat в модуле "Аудит сайта — Персональный отчет — Код ответа".

301 редирект: примеры использования в .htaccess

Примеры приведены для серверов на Apache, для NGINX эти настройки работать не будут. Ниже даны ситуации, когда возникает потребность в настройке 301 редиректа, и примеры кода для .htaccess. Перед внесением изменений в файл .htaccess рекомендуем сделать его копию.

1. Для определения главного зеркала сайта

Редирект с версии без www на версию с www

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{HTTP_HOST}</span> ^site\.com$ [NC] <strong>RewriteRule</strong> ^(.*)$ <a href="http://www.site.com/">http://www.site.com/</a><span class="hljs-number">$1</span> [R=301,L] </code>

Редирект с версии с www на версию без www

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{HTTP_HOST}</span> ^www.site\.com$ [NC] <strong>RewriteRule</strong> ^(.*)$ <a href="http://site.com/" >http://site.com/</a><span class="hljs-number">$1</span> [R=301,L] </code>

Оба варианта равнозначны и правильны с точки зрения ПС. Если у вас в индексе больше страниц с www — лучше будет использовать переадресацию на версию с www, и наоборот.

2. Канонизация слеша в конце урла

http://www.site.com/dog1/">http://www.site.com/dog1/ — http://www.site.com/dog1 Если адрес страницы отличается хоть на один символ — ПС считают такие страницы разными. А если это разные страницы с одинаковым контентом — это дубли. Поэтому очень важно следить чтобы все URL страниц были только в нижнем регистре и одного формата (со слэшом или без слэша в конце). Как и для www — настраивайте перенаправления на версию страниц, с которой у вас больше в индексе.

Редирект для удаления "/" в конце

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{HTTP_HOST}</span> (.*) <strong>RewriteCond</strong> <span class="hljs-cbracket">%{REQUEST_URI}</span> /$ [NC] <strong>RewriteRule</strong> ^(.*)(/)$ <span class="hljs-number">$1</span> [L,R=301] </code>

Редирект для добавления "/" в конце адресной строки

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{REQUEST_FILENAME}</span> !-f <strong>RewriteCond</strong> <span class="hljs-cbracket">%{REQUEST_URI}</span> !(.*)/$ <strong>RewriteRule</strong> ^(.*[^/])$ <span class="hljs-number">$1</span>/ [L,R=301]</code>

3. Редирект с любого URL на URL в нижнем регистре

<code><span class="hljs-variable">$lowerURI</span>=strtolower(<span class="hljs-variable">$_SERVER</span>[<span class="hljs-string">'REQUEST_URI'</span>]); <strong>if</strong>(<span class="hljs-variable">$_SERVER</span>[<span class="hljs-string">'REQUEST_URI'</span>]!=<span class="hljs-variable">$lowerURI</span>) { header(<span class="hljs-string">"HTTP/1.1 301 Moved Permanently"</span>); header(<span class="hljs-string">"Location: http://"</span> . <span class="hljs-variable">$_SERVER</span>[<span class="hljs-string">'HTTP_HOST'</span>] . <span class="hljs-variable">$lowerURI</span>); <span class="hljs-built_in">exit</span>(); }</code>

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

4. Редирект при смене домена

При смене домена, если необходимо учесть пожелания Яндекса по переезду, следует сделать редиректы со всех страниц, кроме robots.txt. Для Google это делать не нужно.

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{REQUEST_FILENAME}</span> robots.txt$ [NC] <strong>RewriteRule</strong> ^([^/]+) <span class="hljs-number">$1</span> [L] <strong>RewriteCond</strong> <span class="hljs-cbracket">%{HTTP_HOST}</span> !^www\.site\.com <strong>RewriteRule</strong> ^(.*)$ <a href="http://www.site.com/" rel="nofollow">http://www.site.com/</a><span class="hljs-number">$1</span> [R=301,L] </code>

В файл robots.txt для старого сайта необходимо внести:

<code><span class="hljs-tag">User-agent</span>: <span class="hljs-tag">Yandex</span> <span class="hljs-tag">Disallow</span>: <span class="hljs-tag">Host</span>: <span class="hljs-tag">sitenew</span><span class="hljs-class">.com</span> </code>

Директиву Disallow тут вносим обязательно по требованиям поисковых систем, но её можно и оставить пустой.

5. Редирект со всех страниц одного домена на главную другого

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{ENV:REDIRECT_STATUS}</span> ^$ <strong>RewriteRule</strong> !(^$|.*\.(css|jpg|gif)) / [R=301,L]</code>

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

6. Редирект при переезде на https

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{HTTPS}</span> =of <strong>RewriteRule</strong> ^(.*)$ https://<span class="hljs-cbracket">%{HTTP_HOST}</span>/<span class="hljs-number">$1</span> [R=301,L]</code>

Как и в случае со слэшами и главным зеркалом, главная цель такого редиректа — борьба с дублями страниц. Дополнительно при переезде на https рекомендуем использовать HSTS. Нужно понимать, что при настройке редиректов на https возможность слать http запросы к сайту остается. HSTS говорит браузеру, чтобы тот «не общался» с сайтом по http. Даже если браузер встретит на этом сайте ссылку http, или пользователь введет ее руками, он отправит запрос сразу на https версию и не пойдет по пути, когда запрос отправляется сначала на http версию, а уже потом сам сервер перенаправляет 301 редиректом на https. Это сделано, чтобы уберечь пользователя от возможных вклиниваний и перенаправлений крутых хакеров и злоумышлеников. Поисковые боты не будут попадать под этот сценарий.

7. Редирект при смене каталога, содержащего документы

<code><strong>RewriteRule</strong> ^catalog /catalog-new/<span class="hljs-number">$1</span> [R=301,L]</code>

Это правило обычно используют, если структура каталога отображается в URL, и необходимо поменять либо уйти от неё (например, чтобы добавить в URL ключевое слово или сократить его).

8. Редирект с одной страницы на другую

<code>Redirect <span class="hljs-number">301</span> /oldpage.html http:<em>//site.com/newpage.html</em></code>

Используем, если изменился адрес документа, либо если больше нет услуги/товара, но есть аналоги, чтобы перевести пользователей и вес на эти страницы.

9. Склеить несколько символов, идущих подряд в 1 символ (в примере — склеить два дефиса в один):

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{REQUEST_URI}</span> ^(.*)--(.*)$ <strong>RewriteRule</strong> . <span class="hljs-number">%1</span>-<span class="hljs-number">%2</span> [R=301,L]</code>

Чаще всего это несколько слэшей либо дефисов подряд. Такие страницы могут появляться из-за некорректной настройки маршрутизаторов, например, два пробела подряд не объединяются и превращаются в два дефиса, либо маршрутизатор всегда дописывает "/" в конце, не проверяя его наличие.

10. Редирект для страниц, имеющих Get-параметры в URL

Например, адрес страницы http://site.com/catalog/index.php?IBLOCK_ID=4&SECT.... Чтобы сделать переадресацию:

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{QUERY}</span> ^IBLOCK_ID=4&SECTION_ID=20$ [NC] <strong>RewriteRule</strong> ^catalog/index\.php$ /newcatalog/? [R=301,L] </code>

Иногда необходимо настроить редирект для изменяющихся Get-параметров. Например, параметром будет SECTION_ID:

<code><strong>RewriteCond</strong> <span class="hljs-cbracket">%{QUERY}</span> ^IBLOCK_ID=4&SECTION_ID=(.*)$ [NC] <strong>RewriteRule</strong> ^catalog/index\.php$ /catalognew/? [R=301,L]</code>

Оба вида редиректов используем в основном когда необходимо настроить ЧПУ вместо url-а с параметрами

11. Переадресация одного адреса без вложенных адресов

Если нужно настроить редирект со страницы раздела http:/site.com/category/, а другие страницы в разделе должны работать без редиректа, например, страница http://site.com/category/post-1/, нужно добавить всего один символ — $.

<code><strong>RewriteRule</strong> ^category/$ <span class="hljs-url"><a href="http://site.com/new-category/" rel="nofollow">http://site.com/new-category/</a></span> [R=<span class="hljs-number">301</span>,L]</code>

Например, если большинство документов вашего сайта лежат в папке catalog, а страница site.com/catalog не содержит никакого контента.

302 и 307 редирект: как правильно использовать

Использование 302 редиректа оправдано, если:

  • важно, чтобы исходная страница продолжала индексироваться. Например, у вас интернет-магазин и закончился какой-то товар, но есть очень близкий его аналог. Тогда на время отсутствия товара можно перенаправлять пользователей на страницу аналога.
  • целевая страница будет часто меняться. Например, для запросов типа «концерты в Одессе сегодня» можно каждый день делать 302 редиректы на страницу с текущей датой на сайте.
  • на исходной странице размещены ссылки, что и дальше должны индексироваться.

Не забывайте: если Google посчитает использование 302 редиректа в каком-то конкретном случае ошибочным, старый URL пропадет из выдачи, а ссылочный вес и PageRank полностью перейдут к новому.

Правила использования 302 редиректа в .htaccess аналогичны описанным правилам использования 301, необходимо лишь заменить R=301 на R=302. В глазах поисковых систем 307 редирект является практически полным аналогом 302. Единственное различие — 307 редирект сохраняет метод передачи запроса, тогда как 302 может вести себя непредсказуемо с методами отличными от GET (это POST, PUT, DELETE). Информации, обрабатывает ли передачу веса аналогично 301 редиректу, если считает что в этом случае лучше использовать его.

Выводы

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

  • если вам необходимо навсегда изменить страницу или передать ссылочный вес — используйте 301 редирект;
  • если целевая страница часто меняется, либо перенаправление на короткий срок — используйте 302 редирект;
  • если метод передачи запроса не GET, а вам важно обработать его корректно — вместо 302 используйте 307 редирект.
+1
В избр. Сохранено
Авторизуйтесь
Вход с паролем
Комментарии
Антоненко Роман
Инструкцию сохранил. Спасибо.
Ответить
Андрей Дмитриев
302 и 307 редиректы для Яндекса губительны, т.к. в таком случае он выкинет из выдачи страницы с таким редиректом (т.е. страницы с которых идет редирект), а новые не добавит. Проверено неоднократно, когда некоторые CMS грешат этим подставляя такой редирект.
Ответить
Выбрать файл
Блог проекта
Расскажите историю о создании или развитии проекта, поиске команды, проблемах и решениях
Написать
Личный блог
Продвигайте свои услуги или личный бренд через интересные кейсы и статьи
Написать

Spark использует cookie-файлы. С их помощью мы улучшаем работу нашего сайта и ваше взаимодействие с ним.