301 редирект — что это, для чего и когда использовать
301 редирект — редирект, который «склеивает» показатели веб-ресурсов и перенаправляет посетителей с одного адреса на другой. При этом человек попадает на новый URL автоматически, а поисковики не занижают его позиции.
Когда применяют 301 редирект?
Случается, нужно переместить старый адрес на новый. К примеру, если архитектура сайта изменилась или был куплен новый домен. ИКС (Яндекс), позиции в выдаче или вес страниц при этом, конечно, терять нежелательно. А еще посетители могут попытаться зайти на сайт, по памяти вводя адрес… Как сберечь трафик в такой ситуации? Лучшее решение — 301 SEO редирект. Он переадресует старый URL на новый, передав ему все параметры, а человек будет машинально переходить на актуальный адрес.
Есть много способов реализовать 301 редирект. Самый простой и популярный — настроить 301 redirect в системном файле htaccess.
В чем отличие 301 от 302 редиректа?
С позиции поисковой оптимизации, 301 redirect стоит применять во всех без исключения случаях, когда необходимо переадресовывать посетителей и поисковики на новый URL. 302 redirect лишь временно переадресовывает на другой URL. Такой серверный ответ не объясняет поисковикам, что адрес неактуален, потому в поиске он будет отображаться по предыдущему и по настоящему URL.
Часто программисты не видят различия, потому после реконструкции веб-сайта или перехода на новый URL нужно проконтролировать ответ сервера. Сделать это возможно с помощью специальных сервисов.
Как сделать переадресацию сайта? Есть такие способы:
301 редирект с www на без www. Чаще всего настройка редиректа нужна, когда веб-ресурс доступен по двум адресам в одно и то же время. В индексе возникают дубли страниц, а это препятствует продвижению ресурса (4 разных варианта);
RewriteCond %{HTTP_HOST} ^www.site.com.ua$
RewriteRule ^(.*)$ http://site.com.ua/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www\.site\.ru
RewriteRule ^(.*)$ http://site.ru/$1 [R=permanent,L]
RewriteCond %{HTTP_HOST} ^www.(.*)
RewriteRule ^(.*)$ http://%1/$1 [R=301,L,QSA]
Редирект с без www на с www
RewriteCond %{HTTP_HOST} ^site.com.ua$
RewriteRule ^(.*)$ http://www.site.com.ua/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^vash_sait\.ru$ [NC]
RewriteRule ^(.*)$ http://www.vash_sait.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^site\.ru
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=permanent,L]
301 редирект со старого URL на актуальный. Когда необходимо убрать страницу, на которую ссылается много ресурсов, можно настроить переадресацию на идентичную по содержанию. Это поможет сберечь ссылочную массу и передать вес страницы новому адресу;
Redirect 301 /oldpage.html http://www.site.com/newpage.html
RewriteCond %{QUERY_STRING} ^_route_=staryi-url-bez-domena$
RewriteRule ^(.*)$ http://domen.ru/polnyi-url? [R=301,L]
RewriteBase /
RewriteRule ^old-page.html$ new-page.html [R=301,NC,L]
Редирект с http на https;
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}
RewriteCond %{HTTP:HTTPS} !on [NV]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
RewriteCond %{HTTP:HTTPS} !on [NV]
RewriteRule (.*) https://%{HTTP_HOST}/$1 [L,R]
RewriteCond %{HTTP:HTTPS} !on [NV]
RewriteRule ^/(.*):SSL$ https://%{SERVER_NAME}/$1 [R,L]
RewriteRule ^/(.*):NOSSL$ http://%{SERVER_NAME}/$1 [R,L]
RewriteCond %{HTTP:HTTPS} off [NV]
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R]
Обратный редирект с https на http
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:SSL} =1 [NC]
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [R=301,L]
redirect с URL со слешем на без него;
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
Редирект с URL со слешем на без него исключая админ панель, либо любую необходимую страницу сайта;
RewriteCond %{HTTP_HOST} (.*)
RewriteCond %{REQUEST_URI} !^/admin/*$
RewriteCond %{REQUEST_URI} /$ [NC]
RewriteRule ^(.*)(/)$ $1 [L,R=301]
Редирект, позволяющий добавить слеш в конец URL;
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ $1/ [L,R=301]
Редирект, убирающий множественный /// внутри URL http://site.com//////catalog;
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /{2,}
RewriteRule ^(.*) /$1 [R=301,L]
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R,L]
редирект, убирающий множественный /// внутри URL www.site.com/catalog////page-1.html;
RewriteCond %{REQUEST_URI} ^(.*)//(.*)$
RewriteRule . %1/%2 [R=301,L]
redirect, позволяющий убрать дубль главной с index.php;
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://site.com.ua/ [R=301,L]
RewriteCond %{THE_REQUEST} ^.*/index.php
RewriteRule ^(.*)index.php$ http://site.com.ua/$1 [R=301,L]
редирект, позволяющий убрать дубль главной с index.html;
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.php$ http://site.com.ua/ [R=301,L]
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.html\ HTTP/
RewriteRule ^index\.html$ http://my-site.com/ [R=301,L]
Позволяет убрать дубль главной с /home;
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /home\ HTTP/
RewriteRule ^index\.php$ http://site.com.ua/ [R=301,L]
RewriteCond %{THE_REQUEST} ^GET\ .*/home\ HTTP
RewriteRule ^(.*)home$ /$1 [R=301,L]
Редирект для каталогов;
RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2 [R=301,L]
если URL старого каталога начинается сразу после домена: www.site.com/old-catalog/;
RewriteRule old-catalog /(.*) / old-catalog /$1 [R=301,L]
Грамотно настроенный 301 редирект поможет избежать потерь ссылочной массы, позиций в поисковой выдаче, трафика и предотвратит возникновение страниц-дубликатов, битых ссылок и т.д.