SEO, Вебмастерам

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

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

301 — это один из множества кодов состояния протокола HTTP, который получает клиент от сервера. Иными словами, 301 ответ говорит о том, что запрашиваемый документ (страница) был перемещен на новый адрес на постоянной основе (Moved Permanently).

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

Представим ситуацию, где ваш сайт переезжает с одного движка, где использовалась устаревшая система адресов, на новый, где для старых документов вы хотите использовать ЧПУ (человеко-понятные урлы). Понятно, что если сделать это без каких-то дополнительных работ, то сайт потеряет позиции. Это произойдет по тому, что новые документы, пусть и со старым контентом, будут в глазах поисковой машины новыми. У них не будет тех факторов, которые накопили старые страницы. Соответственно, их набор потребует большого времени.

301 редирект позволяет минимизировать потерю накопленных старой страницей факторов и передать бОльшую их часть на новый документ. Разные поисковики передают разные факторы (Google в этом плане немного уступает Яндексу), но суть остается той же — потери при переезде очень незначительны. Да, конечно, проседание будет, но в большинстве случаев позиции восстанавливаются через 1-2 апдейта.

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

Если на сервере используется Apache, то 301 редиректы можно настроить, отредактировав уже существующий в корне сайта файл .htaccess. Если такого файла нет, то можно сделать его самому. Для того, чтобы перенаправления работали, необходимо подключить модуль mod_rewrite. Конструкция будет иметь следующий вид:

<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On

НАБОР_ПРАВИЛ

</IfModule>

Набор правил может быть разным, рассмотрим самые распространенные виды:

Редирект с помощью директивы Redirect

Является самым простым способом, тут не требуется никаких разъяснений:

Redirect 301 /page_1.html http://new-site.ru/page_2.html

или

Redirect permanent /page_1.html http://new-site.ru/page_2.html

или

RedirectPermanent /page_1.html http://new-site.ru/page_2.html

Единственное что — этот метод безотказно работает, если в урле не содержится никаких параметров, как, например, в адресах подборов по параметрам, сравнений и т.п.

Редирект с помощью директивы RewriteRule

У меня была ситуация, когда в индексе находились страницы подбора, и при переносе сайта их сохранить не получалось, но нужно было настроить перенаправления на аналогичные страницы. Я воспользовался директивой RewriteRule:

RewriteCond %{QUERY_STRING} param1=value1
RewriteRule ^page1.html /page2.html?param2=value2 [L,R=301]

Суть следующая: RewriteCond задает условия, при котором начинает работать RewriteRule.

Редирект с WWW на без-WWW

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

Редирект с без-WWW на WWW

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

Редирект на мобильную версию сайта

RewriteCond %{HTTP_USER_AGENT} (?i:midp|samsung|nokia|j2me|avant|docomo|novarra|palmos|palmsource|opwv|chtml|pda|mmp|blackberry|mib|symbian|wireless|nokia|hand|mobi|phone|cdm|upb|audio|SIE|SEC|samsung|HTC|mot-|mitsu|sagem|sony|alcatel|lg|eric|vx|NEC|philips|mmm|xx|panasonic|sharp|wap|sch|rover|pocket|benq|java|pt|pg|vox|amoi|bird|compal|kg|voda|sany|kdd|dbt|sendo|sgh|gradi|jb|dddi|moto|iphone|android) [NC]
RewriteCond %{HTTP_HOST} domain.ru
RewriteRule ^$ http://m.domain.ru/ [R=302,L]

Здесь в RewriteCond мы задаем условие, если устройство — один из перечисленных далее клиентов, то перенаправляем с domain.ru на m.domain.ru. Маленькое уточнение: я использую 302 редирект (Moved Temporarily, Перемещено временно).

301 редирект с помощью PHP

<?php
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://www.site.ru/newpage.html”);
exit();
?>

Используя редирект с применением срипта, мы отправляем клиенту необходимые для перенаправления заголовки.