Редирект 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").
Простой редирект (в файле .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 (порядок следования записей важен):
Обозначение [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 редиректа с сохранением передаваемой страницы и параметров вызова:
<?
$ref=$_SERVER['QUERY_STRING'];
if ($ref!='') $ref='?'.$ref;
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://newdomain.com/'.$ref);
exit();
?>
где 0 - задержка переадресации в секундах, newdomain.com -страница, куда переадресуем. Некоторые старые браузеры не поддерживают meta refresh со значением 0, для совместимости можно установить ненулевой значение, хотя, на мой взгляд это уже не актуально. Такой редирект не сможет склеить ваши сайты (с www и без) и передать PR, так как игнорируется поисковыми системами. Он возвращает код 200 OK, что соответствует обычной странице. Эта техника популярна у спамеров, поэтому ее стоит применять только для страниц, которые не будут индексироваться.
Редирект с помощью JavaScript
Варианты переадресации на JavaScript чаще реализуются с использованием функции setTimeout('функция', задержка).
Например, автоматически сделать Click на кнопке "Submit" формы "searchform" через 0.1 сек после загрузки кода:
На кнопку "Submit" можно повесить любое действие, например, открыть новый url в этом окне. Кстати такое редиректы чаще встречаются при организации Дорвеев (DorWay) - браузер Пользователя будет переадресован на другую страницу, а поисковый робот, который "не понимает" JavaScript, будет индексировать эту страницу, недоступную пользователю. На ней дорвейщики размещают текст, напичканный "нужными" ключевыми словами.
Чтобы просто переадресовать на другую страницу можно вставить после
В последнем случае уже нельзя будет вернуться на страницу выполнившую переадресацию, так как ее адрес стирается из history, что нередко и нужною.
Если нужна задержка по времени, можно оформить location="http://www.newdomain.com"; в виде функции и вставить ее в setTimeout('функция()', задержка_в_мсек);
Редирект на JavaScrupt не является 301 редиректом и не передаст PR страницы, не сможет обеспечить ее склейку.
Отметим дополнительно некоторые особенности редиректов:
Методы редиректа с .htaccess работают только на Linux серверах, имеющих Apache с включенным модулем Mod-Rewrite.
Использование .htaccess создает дополнительную нагрузку на сервер Apache, более эффективно прописывать те же команды в его конфигурационном файле hpptd.conf, но, как правило, к нему нет доступа у вебмастера.
301 редирект, позволяет сберечь трафик и передать PR страницы для поисковых систем (для Google точно).
процесс склейки и передачи PR занимает длительное времени - до нескольких месяцев и также зависит от поисковой системы, поэтому не удаляйте старую страницу или сайт, пока не произойдет окончательный перенос.
некоторые поисковые системы требуют для склейки сайтов дополнительных настроек, например, для Яндекса нужно дополнительно прописывать robots.txt
Заключение. Безопасный способ редиректа старых страниц на новые или старого сайта на новый адрес, с сохранением позиций в поисковых системах, заключается в использование 301 редиректа, который также позволит вам передать старый Page Rank страницы на новый сайт.
Более подробно про mod_rewrite можно прочитать на:
http://www.engelschall.com/pw/apache/rewriteguide/
http://www.apache.org./docs/mod/mod_rewrite.html
Проверить корректность редиректа и других возвращаемых заголовков, можно, например, здесь:
http://www.rexswain.com/httpview.html
Статистика
Просмотров: 83750 | Средняя оценка: 8.05/84 | Обсуждение
Огромное спасибо за статью! Реальный способ сохранить PR для Google!!! Очень рад, долго искал способ, даже не подумал, редирект джава-скриптом не помогал, PR полгода был нулевым, в то время как на старой директории был 3-4
onesa - думаю, что нет. Следует привести внутренние ссылки к виду www.mysite.ru (т.к. внешние ссылки идут именно на этот адрес). Более компетентно вам смогут помочь в форуме mastertalk.ru, хотя мнений выскажут много разных :)
Были стр-цы слепленные во Фронтпейдже с расш-ем htm перевёл сайт на движок и стал постепенно переносить туда стр-цы, удаляя старые. Урлы поменялись. После апа Гугля получил PR4 ТИЦ 350 Чёрт дёрнул в настройках указать домен с www. После этого PR рухнул до 3, ТИЦ до 110 Сейчас, по запросу в Гугле site:webposidelki.ru выдаётся 1320 стр., а по запросу с www. - 905 страниц. Получилось, что я разделил PR пополам и Гугль занёс эти 905 стр. в саплементал (дополнительный индекс) и считает теперь эти стр-цы неоригинальными. Как вернуть все эти стр-цы и их вес в домен который теперь у моего сайта (webposidelki.ru - постарался побыстрее вернуть всё назад) Движок построен на PHP и использует модреврайт и файлы htaccess, Урлы имеют вид http://webposidelki.ru/post_1222402925.html Обр. внимание на расширение. Как правильно перенести все оставшиеся старые страницы? Взять все разом переоформить в новом шаблоне блога удалив старые, или переносить постепенно? Вобщем нужен ТОЛКОВЫЙ хелп по проблеме.Очень прошу - ПОМОГИТЕ!!!
Для домена www сделать 301 редирект на домен без www - это достаточно для гугли.
Прописать robots.txt указав корректный хост - это нужно для яндекса.
Яндекс тИЦ вроде не разделяет по доменам с www и без (у меня без индекса тИЦ был 270-300 и не падал), а вот индекс разваливает.
Если яндекс будет тормозить с переиндексацией и правильной склейкой доменов, то стоит удалить сайт из его индекса (тИЦ не потеряется при этом) и добавить после удаления правильный сайт.
Хочу спросить! а можно зделать редирект что бы в адресной строке показывался адрес с которого идет перенаправление например сайт лежит http://dark.test.ru перенаправление идет с сайта http://test.ru и что б в адресной строке отображалось http://test.ru вот незнаю поняли или нет но надеюсь:)
Здравствуйте! У меня такая проблема: Мой личный блог был раньше по адресу www.xxxxx.ru/blog Потом он переехал на адрес www.yyyyy.ru на него осталось много ссылок. Сейчас по старому адресу www.xxxxx.ru/blog другой блог. Вопрос: реально ли настроить редирект по старым ссылкам на новый домен www.yyyyy.ru чтобы новый блог от этого не страдал? Буду очень признателен за ответ на мыло admin(собака)blog-mosaic.ru .
Domus - реально, если вы владеете старым доменом www.xxxxx.ru, тогда проще всего сделать редирект в вебсервере (nginx или apache). Если же это был бесплатный блог на каком-либо сервисе или бесплатном хостинге, то нет.
ну как тут не оставиш комментарий,автору респект, сделал все посмотрим вернет ли гугл ПР-3 моему сайту
Чуть не забыл. У меня есть сайт, на бесплатном хосте(пример) xxx.ucoz.ru добавлял страницу в каталоги,а потом ее случайно удалил.Дело в том ,что это страница /index-2.html Мне её просто напросто не восстановить,может подскажете ,что делать,а то жалко сайт,хоть и на халяву,и еще гугл сразу его полюбил,но после всей этой ерунды пр с 4-на 0 упал я аж в шоке был
Здравствуйте! У меня такой вопрос: можно ли сделать выборочный редирект? т.е. - перенаправлять не весь трафик, а только с одного отдельного сайта/домена? Допустим - перенаправление только по ссылкам с домена www.alpha.com через страницу сайта www.beta.ru/redir.htm на страницу другого сайта www.gamma.net? И при этом что бы последний сайт считал переходы как с www.beta.ru/index.php?
prototip: с конкретного домена можно - нужно проверять по полю HTTP_REFERER и соотв. делать редирект когда он равен www.alpha.com. Но делать надо через www.beta.ru/index.php, т.к. значение поля реферера подставляет браузер клиента - соотвественно не для всех типов браузеров может получаться, соотвественно надо добавить при проверке "редиректного домена" на то подходит ли ваш тип браузера (в зависимости от выбранного вами типа редиректа).
Привет, а кто знает, как делать не 301 редирект, то есть редирект без передачи весов и всего прочего с сайта делающего редирект, на тот, куда редиректим, и как к этому относятся поисковики? То есть, как сделать просто редирект без передачи веса, и что бы параноидальные поисковики не сочли это за что-то плохое Спасибо!
Подскажите пожалуйста как правильно написать редирект чтоб с ссылки cgi-bin/index.cgi?num_edit=1014 юзер переправлялся на index.php?option=com_content&view=article&id=19&Itemid=8 Я написал так Redirect cgi-bin/index.cgi?num_edit=1014 http://site.ru/index.php?option=com_content&view=article&id=19&Itemid=8 но не работает :( если написать так Redirect /cgi-bin/index.cgi http://site.ru/index.php?option=com_content&view=article&id=19&Itemid=8 то работает, но мне нужно именно по cgi-bin/index.cgi?num_edit=1014 (вопросик, и всё после него на обрабатывается)
Владимир, у вас просто не правильно построен обработчик, это же проще простого!!! Через условную конструкцию проверьте есть ли у вас переменная num_edit или если нужно проверьте совпадение с значением. Если условие выполнено, то через header(Location) перенаправляете на нужную страницу. Вверху уже есть решение просто переделаете его "под себя".
Скопировал редирект для ASP.net, но браузер выдает: Firefox определил, что сервер перенаправляет запрос на этот адрес таким образом, что он никогда не завершится. * Эта проблема может возникать при отключении или запрещении принятия кук.
Товарищи, помогите пожалуйста с таким вопросом Есть стрый сайт №1. Создан новый сайт №2 Я делаю автоматический редирект, т.е. заходя на сайт №1 идет автоматический переход на сайт №2. Старый сайт №1 при этом остается жить. Просто попасть на него будет не возможно. Вопрос! Как ведут себя поисковики? Будут ли они видеть старый сайт №1, или они по принципу человека - будут тоже автоматом перебрасываться на сайт №2? Т.е. хотелось бы узнать, будут ли поисковые машины сканировать и цитировать старый сайт №1. Что будет с PR? Заранее большущее спасибо за помощь!!!
здраствуйте помогите пожалуйсто нужно переадресоват файл таким образом с файла file.php?key=(тут после равно уникальный ключь для каждого пользователя свой) на такойже файл но на втором сервере, и с соблюдением параметров которые после = примерно так s2.mysite.com/file.php?key=(должнен быть тотже ключь с каким обратиллись до переадресации)
Нодскажите, почему не получается сделать вот такой редирект: Redirect 301 /index.php?categoryID=3 http://www.сайт.com.ua/страница/ ? Если знаете как сделать, подскажите, очень надо.
У миня допустим есть сайт www.mysite.xc3.net и мне надо чтобы когда я захожу www.mysite.xc3.net перекидовало в www.mysite2.xc3.net но когда я ввожу www.mysite.xc3.net\ggg.html мене показывало то что там находиться... или www.mysite.xc3.net\ggg.jpg
Вопрос такой вот допустим есть сайт sb-money.ru ну к примеру мне не нравиться этот домен а я хочу такого вида sbmoney.ru Сначала в robots.txt ставлю склейку вида Host: sbmoney.ru жду пока яша склеит далее ставлю редирект 301 для гугла, PR и ТИЦ перенеслися вопросы:
1) Удаляем с индекса саит sb-money.ru отстраниться ли PR и ТИЦ у sbmoney.ru. Если нет то как сделать?
Вот такой вопрос: как сделать так, чтобы работала ссылка типа http://мой сайт?url=чужой сайт и чтобы у меня на главной http://мой сайт/index.php стояла ссылка чужого сайта из ?url=чужой сайт
вот какая проблема: хочу переставить cms на том же домене. Страниц несколько тысяч, так еще и дело в том, что на старом cms они получали несколько адресов. Как в этом случае произвести редирект с наименьшими потерями? В первую очередь чтобы не потерять страницы в выдаче.
Спасибо за статью! Подскажите. Был сайт site.ru/html стал site.ru/php на движке Joomla на томже состе, вопрос такой: 1. Нужно ли удалять все файлы старого сайта с хоста? 2. После установки редиректа из панели админки хоста, нужноли в гугле и яндексе менять site.ru/html на site.ru/php ? Спасибо!
Подскажите, пожалуйста, пытаюсь склеить сайт с www и без www, выполняю команду: Redirect 301 / http://www.xxx.ru/ добавив её в .htaccess.
В итоге браузер выдает ошибку, что замечен бесконечный цикл редиректов, и отображение страницы остановлено. При этом адрес изменяется с http://xxx.ru на http://www.xxx.ru, как и было запланировано. Но почему так много редиректов?
Помогите пожалуйста. Сайт был в народе, затем переехал на домен com. Вроде бы сделал переадресацию с народа на новый домен, но переадресация происходит только с главной страницы. А как переадресовать с остальных 230 страниц народа на новый?
Сергей, отличная статья! Если бы она мне попалась несколько месяцев назад! Дело в том, что мой сайт для пенсионеров был создан на чистом HTML и так существовал 3 года. Я решил переделать сайт на Joomla. Старые страницы, естественно, я удалять не стал. Ведь они давно прописаны в поисковиках и посетители на них шли напрямую, не зависимо от наличия нового сайта и главной страницы. Так они и остались, вперемешку с новыми. Но ведь индексная страница сменилась. Вместо index.htm стала index.php Естественно PR главной страницы обнулился. А главное, по старой ссылке люди меня не могли найти. Если сайт был указан в таком виде www.pc-pensioneru.ru/ то ссылка работала. Но, на некоторых сайтах ссылка стояла в таком виде pc-pensioneru.ru/index.htm По такой ссылке, вместо сайта выдавалась ошибка 404 Авторов некоторых сайтов я попросил заменить ссылку, но этот путь не рациональный. Ставил я на Joomla расширения и плагины для редиректа, но ничего не получалось. И вот, изучил я эту статью. Без всякой надежды вставил в .htaccess код для редиректа и, каково же было мое удивление, когда редирект заработал. Ссылки с указанием index.htm стали вести на index.php Чтобы не быть голословным, покажу, куда я вставил редирект в файле .htaccess для joomla
Вот сюда (первая и третья строка есть в файле .htaccess для joomla, а между ними я вставил редирект):