301 редирект

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

Ниже рассмотрим несколько типичных примеров настройки редиректа 301.

301 редирект передает:

  • PR страниц и ТИЦ сайта;
  • Ссылочный вес.

301 редирект не передает:

  • Возраст сайт;
  • Наложенные санкции на домен.

301 код ошибки (Moved Permanently) означает, что данная страница или весь сайт перемещены на новый постоянный URL навсегда. Обязательно проверяйте какой код ошибки отдает сервер, когда настроите 301 редирект – для этот я пользуюсь замечательным плагином Firebug, или специализированными программами вроде seofrog

Настройка 301 редиректов, если у Вас веб-сервер Apache, происходит в файле .htaccess. А в случае веб-сервера IIS – это будет файл web.config.

Настройка 301 редиректов в файле .htaccess

В интернете можно найти множество вариантов использования 301 редиректа. Ниже мы опубликуем самые распространенные и рабочие варианты

1. Редирект со страниц сайта без WWW на страницы с WWW:

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

2. Редирект со страниц сайта с WWW на страницы без WWW:

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

3. Редирект со страницы http://site.ru/index.php на http://site.ru:

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

4. Редирект со страницы http://www.site.ru/index.php на http://www.site.ru:

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

5. Редирект урла с параметром на любую страница сайта. Например, со страницы http://www.site.ru/news.php?category=1 на http://www.site.ru/news.php?category=2 (здесь параметр category=):

RewriteEngine On
RewriteCond %{QUERY_STRING} category=1
RewriteRule ^news.php http://www.site.ru/news.php?category=2 [R=301,L]

6. Редирект урла с параметром на главную страницу сайт. Например, со страницы http://site.ru/index.php?show_section=12 на главную страницу http://site.ru/ (здесь параметр show_section=12):

RewriteEngine On
RewriteCond %{QUERY_STRING} show_section=12
RewriteRule ^index.php http://site.ru/? [R=301,L]

7. Редирект с ЧПУ урла на ЧПУ урл, например с http://www.site.ru/gostinica-v-pitere на урл http://www.site.ru/gostinica-v-moskve

RewriteEngine On
RewriteRule ^(.*)gostinica-v-pitere$ http://www.site.ru/gostinica-v-moskve [R=301,L]

8. Вы наверное в своей практике встречали случай, когда есть 2 сайта с одинаковой информацией, но в то же время доступные по разным адресам (сайты дубли). У этих сайтов одинаковый robots.txt, sitemap.xml и один на двоих .htaccess. Предлагаю вариант 301 редиректа с неосновного такого сайта (site2) на основной (site1).

RewriteEngine On
RewriteCond %{HTTP_HOST} ^site2.ru$ [OR,NC]
RewriteCond %{HTTP_HOST} ^www.site2.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.*
RewriteRule ^(.*)$ http://www.site1.ru/$1 [R=301,L]

9. Еще один вариант пенаправления со страницы с параметром, на страницу ЧПУ (или с параметром)

RewriteCond %{QUERY_STRING} ^paramID=701&category_slug=sportivnye-kostjumy
RewriteRule ^index.php$ http://www.agentseo.ru/pagename? [L,R=301]

Если мы хотим чтобы редирект не работал, если есть еще какой то параметр после category_slug=sportivnye-kostjumy, то в конец добавляем $ :
RewriteCond %{QUERY_STRING} ^paramID=701&category_slug=sportivnye-kostjumy$

10. Настроить 301 редирект с http на https через htaccess

Переезд с http на https многие считают «современным трендом». Однако, на сегодняшний день данная мера является обязательной (хотя формально она таковой не является). И вот настал тот час, когда Вы получили SSL-сертификат, Ваш сайт уже работает и по http и по https. Все что осталось настроить в файле .htaccess 301 редирект с http на https версии страниц сайта. Код для настройки приведен ниже.

RewriteCond %{SERVER_PORT} !^443$

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

А вот код на обратный редирект с https на http. Как видите, отличие всего в 1 символ:

RewriteCond %{SERVER_PORT} !^443$

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

 

ПАМЯТКА ПО ИСПОЛЬЗУЕМЫМ СИМВОЛАМ И ОБОЗНАЧЕНИЯМ

Строчка RewriteCond — условие выполнения правила RewriteRule. Если условие выполняется, то срабатывает редирект. Правила могут задаваться с помощью регулярных выражений.

Спецсимволы, используемые в правилах и их значения.

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

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

  • ? — символ повторяется 0 или 1 раз.
  • + — повторяется от 1 до 65536 раз.
  • * — повторяется от 0 до 65536 раз.

Флаги, задают доп. опции для используемого правила. Перечисляются в квадратных скобках через запятую, скажем [NC] или [R=301,L].

  • NC — флаг NoCase, отключающий проверку регистра символов при срабатывании правила.
  • R — флаг Redirect, производит процесс остановки изменения URL-адреса и возвращает результат. Чаще всего используется значение R=301, но возможны и другие для временных перенаправлений (302, MOVED TEMPORARY).
  • L — флаг Last, останавливает формирования URL-адреса и строка считается окончательной.

 

 

Comments (1)

Аватар пользователя Grigorij80
Grigorij80 (не проверено)
пПро какие сео? плагины вы говорите? Когда рассказывайте о сайтах.

Оставить комментарий

Быстрый заказ