Что такое 301 редирект

301 редирект (301 Permanent Redirect) — ответ сервера, а также серверное перенаправление с одного url-адреса на другой. Благодаря такому перенаправлению можно автоматически отправлять пользователя или поисковую систему со старого адреса страницы на новый. Этот ответ сервера указывает поисковым системам, что страница была перемещена на другой адрес, поэтому старый url можно считать устаревшим. После того, как пройдет переиндексация, поисковые системы «склеят» их и будут предлагать пользователям новый.

Где настраивается 301 редирект

Существует несколько наиболее часто используемых способов настройки 301 редиректов:

— через php условие

Когда браузер получает команду вместо одной страницы открыть вторую. Если Ваш сайт сделан на какой-то CMS, то есть вероятность того, что у неё есть функция редиректа с корня на файл index. В этом случае откройте index.php, который находится в корне Вашего движка и пропишите:

if($_SERVER[‘REQUEST_URI’] == «/index.php») {    header(«Location: /»,TRUE,301);    exit();    }

где первая строка указывает какой url-адрес должен перенаправлять, а вторая — на какой url-адрес должно выполняться перенаправление.

— в конфигурационном файле, например в .htaccess

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

Как влияет на SEO перенос сайта на сервер в другой стране?

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

301 редирект с www на без www (настройка главного зеркала)

Самый распространенный случай, когда необходимо настроить редирект, это когда сайт доступен по нескольким адресам одновременно. Например: http://site.com и http://www.site.com. Это может мешать при продвижении сайта, так как в индексе поисковых систем могут появляться полные дубли страниц. Поэтому в файл .htaccess можно попробовать добавить такие строки:

RewriteCond %{HTTP_HOST} ^www\.(.*)$RewriteRule ^(.*)$ http://%1/$1 [L,R=301]

или вот такой вариант

RewriteEngine OnRewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC]RewriteCond %{REQUEST_URI} !^/robots.*RewriteRule ^(.*)$ http://site.com/$1 [R=301,L]

301 редирект с без www на www

RewriteCond %{HTTP_HOST} ^([^www].*)$RewriteRule ^(.*)$ http://www.%1/$1 [L,R=301]

или вот такой вариант

RewriteEngine OnRewriteCond %{HTTP_HOST} ^site\.com$ [NC]RewriteCond %{REQUEST_URI} !^/robots.*RewriteRule ^(.*)$ http://www.site.com/$1 [R=301,L]

301 со старого адреса страницы сайта на новый

Когда вам нужно удалить страницу, но на нее ведет много качественных ссылок, чтобы сохранить эти ссылки и передать ее Page Rank другой странице, можно настроить редирект с этой страницы на максимально релевантную по смыслу другую. В таком случае вам могут помочь дополнительные строки кода в файле .htaccess такого вида:

RewriteCond %{REQUEST_URI} ^/test/$RewriteRule ^.*$ http://site.com/new-test/? [R=301,L]

где test и new-test – ваш варианты страниц

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

Когда вам нужно переехать на абсолютно другой адрес сайта или вы купили хороший старенький домен и хотите его средиркетить, вам могут помочь вот эти дополнительные строчки кода в файле .htaccess того сайта, с которого будет работать перенаправление:

RewriteCond %{REQUEST_URI} (.*)RewriteRule ^(.*)$ http://site.com/ [L,R=301]

где site.com – сайт, на который будет идти редирект

301 редирект с каждой страницы одного домена на такой же адрес другого

RewriteCond %{REQUEST_URI} (.*)RewriteRule ^(.*)$ http://site.com/$1 [L,R=301]

где site.com – сайт, на который будет идти редирект

Редирект с http на https

Если вы решились переехать на защищенный протокол https, необходимо настроить редирект с помощью этих строк:

RewriteCond %{HTTPS} =ofRewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L]

или можно попробовать такой вариант

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

301 редирект со страниц со слешем на без слеша (для всего сайта)

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

или вот такой вариант

RewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} ^(.+)/$RewriteRule ^(.+)/$ /$1 [R=301,L]

18 проверенных SEO-советов по оптимизации сайта

301 редирект со страниц без слеша на слеш (для всего сайта)

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

или вот такой вариант

RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_URI} !(.*)/$RewriteRule ^(.*[^/])$ $1/ [L,R=301]

301 редирект только адреса site.ru/index.php (без GET параметров) на основное зеркало site.com

RewriteCond %{REQUEST_URI} /index.phpRewriteCond %{QUERY_STRING} ^\zRewriteRule ^(.*)$ http://site.com/? [R=301,L]

или вот такой вариант

RewriteEngine OnRewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/RewriteRule ^index\.php$ http://www.site.com/ [R=301,L]

301 редирект всех адресов с index.php и GET параметрами на страницы только с GET параметрами (вырезать в url index.php)

RewriteCond %{REQUEST_URI} /index.phpRewriteRule ^(.*)$ http://site.com/ [R=301,L]

301 редирект для index.php, index/l или index/ (например в Joomla), массовая склейка

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.(php|html|htm)\ HTTP/RewriteRule ^(.*)index\.(php|html|htm)$ http://site.com/$1 [R=301,L]

Редирект с внутренней страницы на главную

RewriteEngine OnRewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC]RewriteRule ^vnutrenyaya-stranica/$ http://www.site.com/ [R=301,L]

Редирект с главной на внутреннюю страницу

RewriteEngine OnRewriteCond %{HTTP_HOST} ^www\.site\.com$ [NC]RewriteRule ^$ http://www.site.com/vnutrenyaya-stranica/ [R=301,L]

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

RewriteEngine OnRewriteCond %{ENV:REDIRECT_STATUS} ^$RewriteRule !(^$|.*\.(css|jpg|gif)) / [R=301,L]

Редирект с домена net на домен com

RewriteCond %{HTTP_HOST} ^net$ [NC]RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]

301 редирект каталога

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]

Эти решения чаще всего подходят для основных задач, но иногда их необходимо дорабатывать совместно с разработчиками. Связано это с особенностями отдельных cms-систем.

Важная рекомендация: на многих хостингах по умолчанию может работать 302 или другой  3ХХ редирект. Поэтому рекомендуется всегда дописывать в свои правила [R=301,L].

Смена cms-системы и массовое изменение всех адресов страниц сайта

Бывают случаи, когда вы переезжаете на другую cms и адреса ваших страниц меняются следующим образом:

Было — site.com/category/kategoriya

Стало — site.com/kategoriya

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

RewriteEngine onRewriteRule ^category/([^/]+)/?$ $1 [L]

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

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

Почему 301 редирект, а не 302 и другой 30х — опыт из нашей практики

С точки зрения SEO, следует всегда использовать 301 редирект, в случае, если вы хотите перенаправлять и пользователей и поисковых роботов на новый адрес.

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

Эту разницу чаще всего разработчики не понимают, поэтому после редизайна сайта или переезда на новый адрес следует всегда проверять ответ сервера и рекомендуется оформлять его как 301.

Важно знать и помнить — если вы хотите, чтобы поисковые системы считали два разных адреса как один — должна работать переадресация на основной, с помощью 301 редиректа. В противном случае в индексе остается страница со старым адресом и появляется страница с новым, как в приведенном выше примере. Использование 302 или любых 30х редиректов, как правило, с точки зрения SEO не приводит ни к чему хорошему.

Давайте дружить

Pin It on Pinterest

Share This