WEBSET - разработки для Интернет

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

30 августа 2007 | PHP, Разное | распечатать | просмотров: 11563
 (Голосов: 5)

Мало кто из вебмастеров знает про такую полезную вещь, как 301 редирект. Для чего оно нужно? Дело в том, что фактически www.имясайта.ru и имясайта.ru (без www) – это разные сайты. В связи с этим возникают некоторые проблемы во взаимоотношениях сайта и поисковых систем.

Во-первых, это дублирование содержимого (информация воспринимается, как одинаковая, расположенная на разных сайтах).

Во-вторых, делится PageRank для страниц сайтов www.имясайта.ru и имясайта.ru (без www) (невозможно контролировать внешние ссылки на сайт – кто-то ставит ссылки с www, а кто-то - без). Редирект 301 (Moved Permanently) позволяет решить эти проблемы.

Ситуация может усложнится когда сайт имеет несколько абсолютно разных доменов, часто поисковые системы не могут правильно определить основной домен. Запись "Host: имя_сайта.зона" в robots.txt не всегда помогает.

Ридирект спомощью robots.txt для Яндекса:

style="color: #000000"> User-agent: Yandex
Disallow:
Host: www.имясайта.ru

Синтаксис файла .htaccess для настройки веб-сервера Apache приведен ниже.

Для перенаправления с поддомена "www":

style="color: #000000"> RewriteEngine on
Options +FollowSymlinks
RewriteBase /

RewriteCond %{HTTP_HOST} ^www.домен.зона$
RewriteRule ^(.*)$ http://домен.зона/$1 [R=301,L]

Для перенаправления с другого домена:

style="color: #000000"> RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^домен.зона$
RewriteRule ^(.*)$ http://новый_домен.зона/$1 [R=301,L]

Эти записи можно совмещать:

style="color: #000000"> RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteCond %{HTTP_HOST} ^домен.зона$
RewriteRule ^(.*)$ http://новый_домен.зона/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.домен.зона$
RewriteRule ^(.*)$ http://новый_домен.зона/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.новый_домен.зона$
RewriteRule ^(.*)$ http://новый_домен.зона/$1 [R=301,L]

После добавления этого кода в .htaccess все посетители и роботы будут перенаправлены на домен "новый_домен.зона"

Cайт без www становится основным, а с www и другие домены склеиваются с ним и передаёт ему свой PR.

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

style="color: #000000"> style="color: #0000BB"><? 

header
style="color: #007700">(
style="color: #DD0000">"HTTP/1.1 301 Moved Permanently"style="color: #007700">);  
style="color: #0000BB">headerstyle="color: #007700">(style="color: #DD0000">"Location: http://домен.зона/дополнительные_параметры);  
exit(); 

?>

Если Ваш сервер используется технологию ASP:

style="color: #000000"> <%@ Language=VBScript %>
<%
Response.Status="301 Moved Permanently"
Response.AddHeader "Location", "http://домен.зона/дополнительные_параметры"
response.end
%>


Замтте, что код на php и asp должен выполнятся первым (до вывода любой информации).

Так же есть возможность реализовать редирект с помощью meta refresh:

style="color: #000000"> <meta http-equiv='refresh' content='0; url=http://домен.зона/'>

где 0 – задержка переадресации в секундах. Некоторые броузеры не поддерживают META REFRESH.

Редирект с помощью JavaScript:

Вот уж где нет предела творчеству и возможности "по изголяться". Варианты переадресации на JavaScript чаще реализуются с использованием функции setTimeout('функция', задержка).

Например, автоматически сделать Click на кнопке "Submit" формы "searchform" через 0.1 сек после загрузки кода:

style="color: #000000"> setTimeout('document.forms["searchform"].Submit.click()', 100);

На кнопку "Submit" можно повесить любое действие, например, открыть новый url в этом окне. Кстати такое редиректы чаще встречаются при организации Дорвеев (DorWay) - браузер Пользователя будет переадресован на другую страницу, а поисковый робот, который "не понимает" JavaScript, будет индексировать ЭТУ страницу, недоступную Пользователю. На ней Дорвейщики размещают текст, напичканный "нужными" ключевыми словами.

Просто переадресовать на другую страницу - вставить после код на JavaScript:

style="color: #000000"> location="http://домен.зона";

или

style="color: #000000"> document.location.href="http://домен.зона";

или

style="color: #000000"> window.location.reload("http://домен.зона");

или

style="color: #000000"> document.location.replace("http://домен.зона");

В последнем случае уже нельзя будет вернуться на страницу выполнившую переадресацию, т.к. адрес страницы стирается из history (что часто и требуется).

Если нужна задержка по времени, можно оформить location="http://домен.зона"; в виде функции и вставить её в setTimeout('функция()', задержка_в_милисек);.

Как разные поисковые системы могут отнестись к такому редиректу, остаётся на их «совести», поэтому для описываемых здесь целей лучше их не применять. Большинство браузеров отработает такую переадресацию как положено, при этом пользователю можно показать дополнительную информацию почему его перемещают по другому адресу.

Партнеры:

Все про современный бодибилдинг, бизнес и финансы, энергетика Украины, Сайт про Стюарта МакРоберта, Интернет-магазин ноутбуков Absolut UA.

Реклама:

Кофеварки. Кондиционер. - BT.Fotomag

© 2007 WEBSET
При использовании материалов сайта ссылка на источник обязательна.
Работает на базе CMS 2z project