Найти тему
Seognom - seo без воды

301 редирект или переадресация через .htaccess

Оглавление

301 редирект (301 Moved Permanently) — это перенаправление пользователя с одной страницы (url) на другую.

Зачем нужен 301 редирект

  • передача ссылочного веса
  • правильное избавление от старых страниц
  • сохранение позиций (полное или частичное) при смене урлов
  • избавление от дублей внутри сайта (если такое есть)
  • переезд сайта на новый домен или протокол HTTPS
  • склейка доменов

Как сделать 301 редирект с помощью файла .htaccess?

Примеры будем рассматривать на сайте вида site.ru

Склейка домена с www с вариантом без

Для поисковых систем site.ru и www.site.ru — это два разных домена. Если у вас не настроена переадресация с одной версии домена на другую, в выдаче поисковых систем могут появиться дубли страниц. При базовой технической оптимизации в файле robots.txt прописывается обязательное правило с указанием главного зеркала сайта, но также для подстраховки необходимо настроить и редиректы. Это не будет лишним точно.

Настраиваем редирект с http://www.site.ru на site.ru. Здесь главное зеркало сайта это http://site.ru

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

301 редирект при переезде на HTTPS

Поисковые системы в последние годы обозначили тренд на безопасность и рекомендуют всем вебмастерам переводить сайты на защищенный протокол https

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

Если нужно сделать наоборот:

RewriteCond %{HTTPS} «on»
RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,QSA]

Стандартная переадресация с одной статической страницы на другую

Часто бывает, что на сайте какие-либо страницы устаревают, становятся неактуальными или просто вебмастеру необходимо привести урл страницы к ЧПУ виду.

Например, нужно настроить 301 редирект со страницы http://www.site.ru/page1/ на страницу http://www.site.ru/prodvizhenie-saytov/

RewriteCond %{REQUEST_URI} ^/page1/$
RewriteRule ^.*$ http://www.site.ru/prodvizhenie-saytov/? [R=301,L]

301-редирект с домена на домен

Иногда бывают ситуации, когда необходимо настроить редиректы с одного домена на другой. Например, у вас был молодой, не трастовый домен, а со временем появился откуда-то прокачанный, трастовый (купили может). Или владельцу сайта надоело старое название домена и резко захотелось его поменять на другое.

Для полной передачи веса с одного домена на другой одних редиректов будет не достаточно, но об этом не в этой статье.

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

Если ваш домен находится в зоне РФ

RewriteCond %{HTTP_HOST} ^xn-…\.xn--p1ai$ [NC]
RewriteRule ^(.*)$ http://www.site.ru/$1 [R=301,L]

Переадресация на папки со слешем в конце /

Иногда на сайтах встречаются дубли страниц вида http://www.site.ru/prodvizhenie-saytov/ и http://www.site.ru/prodvizhenie-saytov

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !\..{1,10}$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.site.ru/$1/ [L,R=301]

Перенаправление с индексной страницы php (index.php) на саму папку (корень)

Иногда у сайтов может появляться «технический мусор» из-за особенностей админки или каких-либо других причин. Например, главная страница сайта бывает часто доступна по адресу вида http://www.site.ru/index.php и может присутствовать в индексе поисковых систем, мешая ранжированию главной страницы в поисковой выдаче.

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

Для всех индексных страниц на сайте:

RewriteRule ^(.*)index\.php$ http://www.site.ru/$1 [R=301,L]

301 редирект с поддомена на основной домен

RewriteCond %{HTTP_HOST} ^test.site.ru$ [NC]
RewriteRule ^(.*)$ http://site.ru%{REQUEST_URI} [R=301,NC,L,QSA]

Статья находится здесь