ноября 29, 2008 | by Макс | Редирект 301 (301 Permanent Redirect) используется в нескольких случаях: при смене домена, при переносе страницы сайта, для склейки имени сайта с www и без него. Это важно для передачи Page Rank (PR) и сохранения поискового трафика. Сам я столкнулся с его необходимостью, когда после переезда своего портала из зоны com, в ru обнаружил, что Google, Яндекс и другие поисковые системы, естественно не “забывают” старого сайта (отчасти еще и из-за того, что у меня была некорректно установлена своя страница, для обработки 404 ошибки, которая возвращала код ответа 200 OK). Более того, Google за полгода оставил для нового сайта PR=0, хотя для старого он сохранился PR=4. Тема 301 редиректа постоянно обсуждается в различных SEO-форумах, да и каждая поисковая система в своей системе помощи имеет специальные разделы. Пока разбирался я нашел перечисленные ниже варианты организации редиректа, часть из которых опробовал у себя. 301 редирект это наилучший метод сохранения ваших позиций в поисковых системах, когда вы переносите страницу или сайт. Код “301″ интерпретируется как постоянное перемещение (”moved permanently”). 1. Простой редирект (в файле. htaccess или httpd. conf для Apache): Redirect 301 / http://www. you. com/new. htm где: Redirect 301 – это инструкция, говорящая что страница перемещена / – означает, что все с верхнего уровня сайта, включая все подкаталоги, будет переадресовано 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 редиректа. 2. Использование 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] 3. Редирект на 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 редиректа с сохранением передаваемой страницы и параметров вызова: $ref=$_SERVER[’QUERY_STRING’]; if ($ref!=”) $ref=’?’.$ref; header(’HTTP/1.1 301 Moved Permanently’); header(’Location: http://newdomain. com/’.$ref); exit(); ?> 4. Редирект на ASP: Response. Status=”301 Moved Permanently” Response. AddHeader “Location”, “http://www. new-url. com” response. end %> 5. Редирект на ASP. NET: private void Page_Load(object sender, System. EventArgs e) { Response. Status = “301 Moved Permanently”; Response. AddHeader(”Location”,”http://www. new-url. com”); } 6. Редирект на ColdFusion: 7. Редирект с помощью meta refresh: где 0 – задержка переадресации в секундах, newdomain. com – страница, куда переадресуем. Некоторые старые браузеры не поддерживают meta refresh со значением 0, для совместимости можно установить ненулевой значение, хотя, на мой взгляд это уже не актуально. Такой редирект не сможет склеить ваши сайты (с www и без) и передать PR, так как игнорируется поисковыми системами. Он возвращает код 200 OK, что соответствует обычной странице. Эта техника популярна у спамеров, поэтому ее стоит применять только для страниц, которые не будут индексироваться. 8. Редирект с помощью JavaScript: Варианты переадресации на JavaScript чаще реализуются с использованием функции setTimeout(’функция’, задержка). Например, автоматически сделать Click на кнопке “Submit” формы “searchform” через 0.1 сек после загрузки кода: setTimeout(’document. forms[”searchform”].Submit. click()’, 100); На кнопку “Submit” можно повесить любое действие, нап
Понравилась статья? Получай обновления и будь всегда в курсе событий!