Блог статей и новостей / Настройка редиректов на серверах
Редиректы — это способ перенаправлять пользователей сайтов на 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. Браузеры кешируют редиректы — чтобы проверить их работу, сбрасывайте кеш или используйте специализированные сервисы.
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 редиректа оправдано, если:
- важно, чтобы исходная страница продолжала индексироваться. Например, у вас интернет-магазин и закончился какой-то товар, но есть очень близкий его аналог. Тогда на время отсутствия товара можно перенаправлять пользователей на страницу аналога.
- целевая страница будет часто меняться. Например, для запросов типа «концерты в Одессе сегодня» можно каждый день делать 302 редиректы на страницу с текущей датой на сайте.
- на исходной странице размещены ссылки, что и дальше должны индексироваться.
Правила использования 302 редиректа в .htaccess аналогичны описанным правилам использования 301, необходимо лишь заменить R=301 на R=302.
В глазах поисковых систем 307 редирект является практически полным аналогом 302.
Единственное различие — 307 редирект сохраняет метод передачи запроса, тогда как 302 может вести себя непредсказуемо с методами отличными от GET (это POST, PUT, DELETE). Информации, обрабатывает ли передачу веса аналогично 301 редиректу, если считает что в этом случае лучше использовать его.
Позвоните или напишите нам, и мы избавим Вас от массы проблем, связанных с нестабильной работой серверов и
ИТ-систем Вашего предприятия в целом.
Абонетское обслуживание
серверов
г. Одесса, Украина,
ул. Известковая 87/5
info@up-time.com.ua
+38 097 268 0455