301 Redirect – это ошибка запроса к адресу сайта, означающая, что сайт или страница были перемещены. Решает эту ошибку сервер самостоятельно путем направления запроса на новый адрес, если функция редиректа настроена. Важно, что смена адреса учитывается не только для пользователей, но и для поисковых систем. Направление запроса на другой адрес в случае прекращения действия старого и есть 301 Redirect.
Крайне важно в работе этой функции следующее: показатели одного адреса сайта передаются другому адресу. Все PageRank, тИЦ и даже ссылочный вес адреса будет закреплен за новой ссылкой. Т.е. если меняется адрес сайта или страницы, то функция 301 Redirect настраивается для сохранения рейтинга в поисковых системах. Показатели сайтов “склеиваются”. Это главная задача редиректа 301.
Итак, подводя краткие итоги, имеем:
При работе с Apache настройка выполняется в файле .htaccess. Помните, что необходимо активировать mod_alias (отвечает за исполнение задания Redirect) mod_rewrite (для изменений URL) в файле php.ini. Для редактирования вышеуказанных файлов можно использовать любой текстовый редактор вплоть до обычного блокнота.
При смене адреса с WWW на адрес без WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.oldpage\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.*
RewriteRule ^(.*)$ http://newpage.ru/$1 [R=301,L]
При смене адреса без WWW на адрес с WWW:
RewriteEngine On
RewriteCond %{HTTP_HOST} ^oldpage\.ru$ [NC]
RewriteCond %{REQUEST_URI} !^/robots.*
RewriteRule ^(.*)$ http://www.newpage.ru/$1 [R=301,L]
Прописывать все перенаправления страниц вручную – огромная по временным рамкам работа. Минимизировать и ускорить её можно, если все страницы старого адреса будут переводить любой запрос на главную страницу нового:
RewriteCond %{REQUEST_URI} (.*)
RewriteRule ^(.*)$ http://newsite.ru/ [L,R=301]
Главные проблемы возникают при редиректе с одного домена на другой. Простой пример перенаправления на новый домен:
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} robots.txt$ [NC]
RewriteRule ^([^/]+) $1 [L]
RewriteCond %{HTTP_HOST} ^oldsite\.ru
RewriteRule ^(.*)$ http://newsite.ru/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^www.oldsite\.ru
RewriteRule ^(.*)$ http://newsite.ru/$1 [R=301,L]
HTTP/1.1 301 Moved Permanently
Location: http://www.newsite.ru/
В этом случае пользователь увидит сообщение о том, что случилось с сайтом, в данном примере “Moved Permanently” и увидит новый адрес сайта строкой ниже.
<?php
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://www.newsite.ru/”);
exit();
?>
А именно: