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

Продвижение по трафику от 50 копеек за переход. Заказать

10 популярных 301 редиректов в .htaccess

Подписаться
Больше интересностей из блога студии SEMANTICA
Получайте эффективные советы по интернет-рекламе и SEO-оптимизации вашего сайта
ВКонтакте:
Facebook:
Twitter:

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

301 Permanent Redirect / 301 редирект…

… это переадресация пользователя на другой адрес страницы или домена. Этот код ответа сервера означает, что страница и ресурс переехали навсегда и теперь доступны в другому адресу.

Есть мифы, связанные с редиректами: например, что при редиректе не передаётся PR страницы, но этот миф был развенчан одним из вебмастеров Google Джоном Мюллером в своем блоге. Или что вместо 301 Moved Permanently редиректа можно использовать 302 Temporary Redirect.

301

 

 

Существует целый класс 3хх редиректов. Наиболее часто используются коды 301 и 302 — они как двойняшки, которые вроде бы и похожи, но всё-таки различаются. А для поискового робота это два совершенно разных человека, и трактуются такие ответы сервера по-разному:

  1. 301 Moved Permanently: постоянный редирект. Этот код уведомляет о том, что ресурс перемещен на новый адрес на постоянной основе с удалением прошлого домена. Нужен для окончательного переезда на новый ресурс, новую CMS или для склейки страниц.
  2. 302 Temporary Redirect: временный редирект. Уведомляет о временном переезде сайта или его страницы. Используется при технических работах на сайте.

Как эти коды отразятся на выдаче:

  • При 301 редиректе в поисковой выдаче начинает отображаться новый URL, но это может занять некоторое время. Google советует сохранять статус страницы в течение года.
  • При 302 редиректе в поиске сохраняется старый URL страницы, но через 6 месяцев использования 302 редиректа поисковая система начинает считать его за постоянный 301, т.к. временное перенаправление не зря названо «временным», а полгода — достаточно большой срок.

Из-за подобных ошибок вебмастеров и злоупотребления 302 редиректом в неэтичных целях SEO-специалисты очень не советуют использовать его на своём сайте, ведь даже за небольшое подозрение в черном SEO вы можете схлопотать серьезный штраф. Давайте лучше разберемся как можно настроить легальный 301 редирект в. htaccess

50970803

 

Файл .htaccess — это файл конфигурации HTTP-сервера, наподобие Apache. С его помощью задается большое количество дополнительный параметров и разрешений веб-сервера, распространяет свои права только на каталог, в котором располагается, и его дочерние подкаталоги.

 

Самый простой пример редиректа: с сайта на сайт

Redirect / www.example.com

www.example.com — сайт, на который мы перенаправляем запрос пользователя.

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

Redirect /semantica semantica.in/

Redirect /semantica/blog semantica.in/blog

Redirect 301 /kernel semantica.in/

 

Что всё это значит:

1 строка — при обращении к странице www.example.com/semantica будет открываться сайт semantica.in/

2 строка — при обращении к http://www.example.com/semantica/blog будет открываться semantica.in/blog

3 строка — веб-сервер будет отдавать код 301 о постоянном переезде на новый URL

 

Теперь, когда вы примерно понимаете, как это работает, можно переходить на задачи посложнее.

 

 

Сложные редиректы

Для сложных редиректов существует модуль mod_rewrite — это средство преобразования URL-адресов, использующее регулярное выражение. Для редиректа используются три важные директивы: RewriteCond, RewriteRule и RewriteEngine.

  1. RewriteEngine включает или выключает работу механизма преобразования:
RewriteEngine on | off

Положение on-off включает и выключает работу модуля.

2. RewriteCond — определяет условие какого-либо правила, при котором происходит преобразование. Сразу после директивы чаще всего идут переменные %{HTTP_HOST} и %{REQUEST_URI}, которые означают адрес сервера (например, example.ru) и ресурс, запрошенный в строке HTTP-запроса, соответственно.

3. RewriteRule — идёт после одного или нескольких RewriteCond. Это правило преобразования URI, которое применяется только при условии выполнения RewriteCond.

Синтаксис директивы RewriteRule выглядит следующим образом:

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

 

Здесь стоит дать пояснение к используемым символам регулярного выражения, которое задает шаблоны строк:

Метасимволы используются для задания групп символов и меток в шаблоне:

  • ^ — метка начала строки,
  • $ — метка конца строки,
  • \ — экранирующий слеш, позволяет считать следующий за ним метасимвол обычным символом,
  • . — точка, обозначает любой символ, но только один,
  • () — группировка.
  • ! — отрицание,

Флаги определяют дополнительные опции для данного правила и перечисляются в квадратных скобках через запятую:

  • NC — (nocase) отключает проверку регистра символов.
  • R — (redirect) останавливает процесс преобразования и возвращает результат браузеру клиента как редирект на данную страницу (302, MOVED TEMPORARY). С данным флагом можно указать другой код результата, например R=301 возвратит редирект с кодом 301 (MOVED PERMANENTLY).
  • L — (last) останавливает процесс преобразования, и текущая ссылка считается окончательной.

 

Как сделать 301 редирект? 

Теперь, зная эти правила, мы можем попытаться самостоятельно сделать редирект с помощью htaccess.

  1. Редирект .htaccess на другую страницу
Redirect 301 /old-post.html http://new-site.ru/new-post.html

 

  1. Редирект .htaccess с www на без www
RewriteEngine on

RewriteCond %{HTTP_HOST} !^site.ru$ [NC]

RewriteRule ^(.*)$ site.ru/$1 [R=301,L]

 

  1. Редирект .htaccess с без www на www
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www.site.ru$ [NC]

RewriteRule ^(.*)$ www.site.ru/$1 [R=301,L]

где site.ru — ваше доменное имя.

 

  1. Редирект с index.php (html) на главную страницу
RewriteEngine on

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/

RewriteRule ^(.*)index\.(php|html|htm)$ $1 [R=301,L]

 

  1. Редирект со слешем на без слеша
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} ![^\/]$
RewriteRule ^(.*)\/$ /$1 [R=301,L]

 

  1. Редирект со страниц без слеша на слеш
RewriteCond %{REQUEST_URI} !\?
RewriteCond %{REQUEST_URI} !\&
RewriteCond %{REQUEST_URI} !\=
RewriteCond %{REQUEST_URI} !\.
RewriteCond %{REQUEST_URI} !\/$
RewriteRule ^(.*[^\/])$ /$1/ [R=301,L]

 

  1. Редирект всех страниц одного домена на главную другого домена
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://site.ru/ [L,R=301]

 

  1. Редирект с http на https через. htaccess
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

 

  1. Редирект с https на http
RewriteCond %{HTTPS} =on
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]

 

  1. Избавление от дублей страниц

Если вы заметили, что к адресу основной страницы приклеивается что-то вроде &sa=123 456 или &crw=123 456 и подобное, просто замените буквенную часть в следующем коде

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

Пример: объясняем на пальцах

Как с помощью 301 редиректа сделать так, чтобы по запросу site.ru/category/art1/zapis/ в строке адреса было site.ru/zapis/, то есть /category/art1 вырезалась бы из строки, но после вырезания строки показывалось содержимое site.ru/category/art1/zapis/?

Легко:


RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteRule ^category/art1/zapis/$ http://%{HTTP_HOST}/zapis/ [R=301,L]
RewriteRule ^zapis/$ /category/art1/zapis/ [L]

А теперь давайте подробнее разберем, что же тут написано и что вообще происходит.

Как известно mod_rewrit на apache постоянно просматривает список правил, пока URL можно хоть как-то изменить.
И не редко получаются бесконечные циклы.

Чтобы ограничить цикл выполнения правил одной итерацией, можно использовать конструкцию из первой строки. Она предает apache статус был ли выполнен редирект или нет и если да, то пропустить следующие правила. К слову, на nginx эта строка не нужна.

Вторая строка делает 301 редирект с www.site.ru/category/art1/zapis/ на www.site.ru/zapis/
Третья же строка говорит серверу, что если адрес вида www.site.ru/zapis/, то надо показывать то, что находится по адресу www.site.ru/category/art1/zapis/

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

66298036

 

 

  1. Принцип «от меньшему к большему»: располагайте редиректы от частных к более глобальны. Т. е. переадресация со страницы на страницу будет выше, чем переадресация с без www на www.
  2. Избегайте последовательных — двойных, тройных — редиректов. Один редирект перенаправляет пользователя только один раз.
  3. Проверьте HTTP заголовки и статусы ответа сервера, чтобы убедиться в правильности работы редиректа.

 

В заключении хотелось бы по пунктам огласить условиях при которых стоит и не стоит использовать .htaccess переадресацию.

 

Когда редирект необходим

  1. Вы переехали на другой домен: и вам логично не хочется потерять своих клиентов — настоящих и потенциальных, а также есть необходимость передать вес прошлого сайта на новый.
  2. Хотите склеить зеркала: у вас несколько доменных имён с разным написанием бренда и вы перенаправляете всех посетителей на основной сайт.
  3. Страница сменила свой адрес: структура вашего сайта была реорганизована и вы пытаетесь предотвратить возможный беспорядок.
  4. Хотите избавиться от дублей страниц или копии сайта: не стоит относится к дублям как чему-то безвредному и незначительному. С дублями вы теряете в весе и сдаете позиции конкурентам, а так же дублирование контента может привести к штрафам от поисковых систем.

 

tumblr_mep7yupgin1qm3atlo1_500

 

В каких случаях не нужно использовать редирект?

  1. Вы временно переезжаете на новую страницу: для этого есть 302 и 307 код, это гарантия того, что не произойдёт склейки страниц и оригинальная страница не выпадет из поисковой выдачи.
  2. Вы переезжаете из-за проблем со старым доменом: если у вас есть баны, фильтры и штрафы, то при склейке к вам перейдет не только ТИЦ и PR, но и все беды, от которых вы бежали.
Задать вопрос по статье
Подпишись на нашу группу в VK и получай экспертные статьи прямо в ленту!

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