Техническая поддержка серверов

Блог статей и новостей / Настройка редиректов на серверах

Что такое редиректы, и для чего они нужны?

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

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

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

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. Браузеры кешируют редиректы — чтобы проверить их работу, сбрасывайте кеш или используйте специализированные сервисы.

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

1.   Для определения главного зеркала сайта
Редирект с версии без www на версию с www
RewriteCond %{HTTP_HOST} ^site\.com$ [NC]
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]
Редирект с версии с www на версию без www
RewriteCond %{HTTP_HOST} ^www.site\.com$ [NC]
RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]
Оба варианта равнозначны и правильны с точки зрения ПС. Если у вас в индексе больше страниц с www — лучше будет использовать переадресацию на версию с www, и наоборот.


2. Канонизация слеша в конце урла
— http://www.site.com/dog1/
— http://www.site.com/dog1

Если адрес страницы отличается хоть на один символ — ПС считают такие страницы разными. А если это разные страницы с одинаковым контентом — это дубли.
Поэтому очень важно следить чтобы все URL страниц были только в нижнем регистре и одного формата (со слэшом или без слэша в конце). Как и для www — настраивайте перенаправления на версию страниц, с которой у вас больше в индексе.
Редирект для удаления "/" в конце
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
Редирект для добавления "/" в конце адресной строки
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]


3. Редирект с любого URL на URL в нижнем регистре
$lowerURI=strtolower($_SERVER['REQUEST_URI']);
if($_SERVER['REQUEST_URI']!=$lowerURI)
{
header("HTTP/1.1 301 Moved Permanently");
header("Location: http://" . $_SERVER['HTTP_HOST'] . $lowerURI);
exit();
}
Поисковые системы учитывают регистр URL, поэтому для избежания дублей важно использовать единый регистр для всех символов в URL.


4. Редирект при смене домена
При смене домена, если необходимо учесть пожелания Яндекса по переезду, следует сделать редиректы со всех страниц, кроме robots.txt. Для Google это делать не нужно.
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} !^www\.site\.com
RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]
В файл robots.txt для старого сайта необходимо внести:
User-agent: Yandex
Disallow:
Host: sitenew.com
Директиву Disallow тут вносим обязательно по требованиям поисковых систем, но её можно и оставить пустой.


5. Редирект со всех страниц одного домена на главную другого
RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule !(^$|.*\.(css|jpg|gif)) / [R=301,L]
Эта настройка может пригодится если у вас есть хороший старый домен, что совсем не подходит по тематике или структуре, но вы хотели бы передать с него вес на свой домен.


6. Редирект при переезде на https
RewriteCond %{HTTPS} =of
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]
Как и в случае со слэшами и главным зеркалом, главная цель такого редиректа — борьба с дублями страниц. Дополнительно при переезде на https рекомендуем использовать HSTS.

Нужно понимать, что при настройке редиректов на https возможность слать http запросы к сайту остается. HSTS говорит браузеру, чтобы тот «не общался» с сайтом по http.

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

7. Редирект при смене каталога, содержащего документы
RewriteRule ^catalog /catalog-new/$1 [R=301,L]
Это правило обычно используют, если структура каталога отображается в URL, и необходимо поменять либо уйти от неё (например, чтобы добавить в URL ключевое слово или сократить его).


8. Редирект с одной страницы на другую
Redirect 301 /oldpage.html http://site.com/newpage.html
Используем, если изменился адрес документа, либо если больше нет услуги/товара, но есть аналоги, чтобы перевести пользователей и вес на эти страницы.


9. Склеить несколько символов, идущих подряд в 1 символ (в примере — склеить два дефиса в один):
RewriteCond %{REQUEST_URI} ^(.*)--(.*)$
RewriteRule . %1-%2 [R=301,L]
Чаще всего это несколько слэшей либо дефисов подряд. Такие страницы могут появляться из-за некорректной настройки маршрутизаторов, например, два пробела подряд не объединяются и превращаются в два дефиса, либо маршрутизатор всегда дописывает "/" в конце, не проверяя его наличие.


10. Редирект для страниц, имеющих Get-параметры в URL
Например, адрес страницы http://site.com/catalog/index.php?IBLOCK_ID=4&SECTION_ID=20. Чтобы сделать переадресацию:
RewriteCond %{QUERY} ^IBLOCK_ID=4&SECTION_ID=20$ [NC]
RewriteRule ^catalog/index\.php$ /newcatalog/? [R=301,L]
Иногда необходимо настроить редирект для изменяющихся Get-параметров. Например, параметром будет SECTION_ID:
RewriteCond %{QUERY} ^IBLOCK_ID=4&SECTION_ID=(.*)$ [NC]
RewriteRule ^catalog/index\.php$ /catalognew/? [R=301,L]
Оба вида редиректов используем в основном когда необходимо настроить ЧПУ вместо url-а с параметрами


11. Переадресация одного адреса без вложенных адресов
Если нужно настроить редирект со страницы раздела http:/site.com/category/, а другие страницы в разделе должны работать без редиректа, например, страница http://site.com/category/post-1/, нужно добавить всего один символ — $.
RewriteRule ^category/$ http://site.com/new-category/ [R=301,L]
Например, если большинство документов вашего сайта лежат в папке catalog, а страница site.com/catalog не содержит никакого контента.

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

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

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

Правила использования 302 редиректа в .htaccess аналогичны описанным правилам использования 301, необходимо лишь заменить R=301 на R=302.

В глазах поисковых систем 307 редирект является практически полным аналогом 302.

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

Позвоните или напишите нам, и мы избавим Вас от массы проблем, связанных с нестабильной работой серверов и
ИТ-систем Вашего предприятия в целом.


АпТайм

Абонетское обслуживание
серверов

Адрес

г. Одесса, Украина, 
ул. Известковая 87/5

Email

info@up-time.com.ua

Телефон

+38 097 268 0455

Связь с нами