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

Статьи

Разные способы 301 редиректа

Редирект 301 (301 Permanent Redirect) используется в нескольких случаях, основными из которых являются: смена домена, перенос страницы сайта, склейка имени сайта с www и без него. Правильное использование 301 редиректа очень важно для быстрой передачи Page Rank (PR) на новый сайт или страницу и сохранения вашего поискового трафика.

Сам я столкнулся с его необходимостью, когда после переезда своего портала из зоны com, в ru обнаружил, что Google, Яндекс и другие поисковые системы, естественно не "забывают" старого сайта (отчасти еще и из-за того, что у меня была некорректно установлена своя страница, для обработки 404 ошибки, которая возвращала код ответа 200 OK). Более того, Google за полгода оставил для нового сайта PR=0, хотя для старого он сохранился на прежнем уровне PR=4.

Тема 301 редиректа регулярно обсуждается в различных SEO-форумах, да и каждая поисковая система в своей системе помощи имеет специальные разделы. Когда я разбирался, то нашел перечисленные ниже варианты организации редиректа, часть из которых успешно опробовал у себя.

Для начала заглянем в документацию:

Директива Redirect

Описание: Выполняет редирект посетителя, запрашивающего документ на другой URL. Выполняет внешний редирект (сообщая браузеру о необходимости загрузить другой URL).

Синтаксис: Redirect [status] URL-path URL

  • status: необязательное поле, определяет код возврата, допустимые значения: permanent (301 — документ перемещен постоянно), temp (302 — документ перемещен временно), seeother (303 — смотрите другой), gone (410 — убран).
  • URL-path: локальная часть URL запрашиваемого документа.
  • URL: URL куда должен быть выполнен редирект.
Redirect temp /           http://www.iho.ru/newyear.html
Redirect temp /index.html http://www.iho.ru/newyear.html
Redirect permanent /prices2002.html http://www.iho.ru/prices2003.html

Итак, 301 редирект это наилучший метод сохранения ваших позиций в поисковых системах, когда вы переносите страницу или сайт. Код "301" интерпретируется как постоянное перемещение ("moved permanently"). Рассмотрим, как можно его организовать:

Простой редирект (в файле .htaccess или httpd.conf для Apache)

Redirect permanent / http://www.you.com/new.htm

где:

  • Redirect permanent — это инструкция, говорящая, что страница перемещена
  • / — означает, что все с верхнего уровня сайта, включая все подкаталоги, будет переадресовано
  • http://www.you.com/new.htm — новая страница или сайт (не забывайте поставить последний "/", если переадресация идет на сайт).

Чтобы переадресовать только страницу, сохранив PR старой страницы:

Redirect 301 /old/old.htm http://www.you.com/new.htm

где:

  • /old/old.htm — путь и имя старой страницы

Аналогичный синтаксис для переадресации сайта:

RedirectPermanent / http://www.you.com/

Пример переадресации каталога:

RedirectPermanent /old-directory http://www.domain.com/new-directory/

Например, зашедших в test переадресуем на www.test.com, остальных на enter.test.com (порядок следования записей важен):

Redirect permanent /test    http://www.test.com/
Redirect permanent /        http://enter.test.com/

Примечание: для моих целей (изменение домена) хватило первого варианта простого 301 редиректа.

Использование mod_rewrite (прописывается в файле .htaccess)

Ставшая классической задача слияния имена сайта с www и без него, решается так:

Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^yoursite\.com
RewriteRule ^(.*)$ http://www.yoursite.com/$1 [R=permanent,L]

или альтернативный синтаксис:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]

Обозначение [R=301,L] означает: перенаправить клиента и отправить ему код статуса 301 (R=301) и сделать это правило последним (L).

Редирект старого домена на новый:

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

Например, если необходимо чтобы вместо rewrite.htm загружался файл rewrite.html, добавьте в .htaccess:

RewriteEngine   on
RewriteBase     /
RewriteRule     ^rewrite\.htm$  rewrite.html [R=permanent]

Для замены всех .htm файлов .html файлами:

RewriteEngine  on
RewriteBase     /
RewriteRule     ^(.*)\.htm$  $1.html [R=permanent]

Редирект на PHP

<?php
header
("HTTP/1.1 301 Moved Permanently");
header("Location: http://www.newdomain.ru/newdir/newpage.htm");
exit();
?>

Лучше указать HTTP/1.1, так как более старые не поддерживают виртуальный хостинг. Не забудьте, что до вызова header, ничего не должно выводиться (например, echo или print). Поэтому этот код лучше ставить в начало php-скрипта. Более полный вариант php редиректа с сохранением передаваемой страницы и параметров вызова:

<?php
$ref 
$_SERVER['QUERY_STRING'];
if ( !empty(
$ref) ) $ref '?'.$ref;
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://newdomain.com/'.$ref);
exit();
?>

Редирект с помощью meta refresh

meta http-equiv='refresh' content='0; url=http://newdomain.com'>

где 0 — задержка переадресации в секундах, newdomain.com — страница, куда переадресуем. Некоторые старые браузеры не поддерживают meta refresh со значением 0, для совместимости можно установить ненулевой значение, хотя, на мой взгляд, это уже не актуально. Такой редирект не сможет склеить ваши сайты (с www и без) и передать PR, так как игнорируется поисковыми системами. Он возвращает код 200 OK, что соответствует обычной странице. Эта техника популярна у спамеров, поэтому ее стоит применять только для страниц, которые не будут индексироваться.

Отметим дополнительно некоторые особенности редиректов:

  • Методы редиректа с .htaccess работают только на Linux серверах, имеющих Apache с включенным модулем mod_rewrite и/или mod_alias.
  • Использование .htaccess создает дополнительную нагрузку на сервер Apache, более эффективно прописывать те же команды в его конфигурационном файле hpptd.conf, но, как правило, к нему нет доступа у вебмастера.
  • 301 редирект, позволяет сберечь трафик и передать PR страницы для поисковых систем (для Google точно).
  • процесс склейки и передачи PR занимает длительное времени - до нескольких месяцев и также зависит от поисковой системы, поэтому не удаляйте старую страницу или сайт, пока не произойдет окончательный перенос.
  • некоторые поисковые системы требуют для склейки сайтов дополнительных настроек, например, для Яндекса нужно дополнительно прописывать robots.txt.

Заключение

Безопасный способ редиректа старых страниц на новые или старого сайта на новый адрес, с сохранением позиций в поисковых системах, заключается в использование 301 редиректа, который также позволит вам передать старый Page Rank страницы на новый сайт.

Источник: http://www.sb-news.net
Автор: Брундасов С.М.