301-ая ошибка (301 Permament Redirect), возвращаемая при обращении к определенному адресу страницы, означает, что сайт был на постоянной основе перенесен на новый адрес, также указанный в HTTP заголовке. Как пользователи, зашедшие через браузер, так и поисковые боты будут перенаправляться по новому адресу, при этом, для поисковиков все свойства старого адреса (страницы) будут переданы новому URL. При 301 редиректе произойдет склейка старого и нового адресов: параметры вроде PageRank и тИЦ, а также вес страницы и ссылочный вес старого адреса будет передан новому URL.
Редирект с номером ошибки 301 (moved permanently) это наилучший способ сохранить рейтинг сайта в поисковых системах при переносе его на новый домен или смене системы управления контентом. Переадресацию можно выполнить несколькими способами, в зависимости от установленного программного обеспечения.
При использовании апача (apache) на сервере, переадресацию можно просто выполнить с помощью файла .htaccess, однако, при этом, не забыть включить модули mod_alias (для поддержки директив Redirect, RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini.
Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias
Redirect 301 /old-page.html http://new-domain.ru/new-page.html
или
Redirect permanent /old-page.html http://new-domain.ru/new-page.html
Недостатком данного способа является то, что все адреса, которые необходимо перенаправить, нужно перечислять один за одним, каждый отдельно. Также можно использовать RedirectPermanent для аналогичных целей.
RedirectPermanent /old-url.html http://new-site.ru/new-url.html
Редирект с помощью директивы RedirectMatch
Этот редирект подобен предыдущему, за исключением того, что можно задавать регулярное выражение для старых URL адресов. Допустим, при смене движка с PHP на ASP, можно старые адреса перенаправить следующим образом:
RedirectMatch /(.*)\.php$ /$1.aspx
Редирект с помощью директивы RewriteRule модуля mod_rewrite
Для использования директивы RewriteRule необходимо удостовериться, что в httpd.conf подключен модуль mod_rewrite, а также влючена опция FollowSymLinks. Использование реврайт модуля дает много возможностей для перенаправления страниц на новые адреса.
Перенаправление домена с www на не-www
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
или альтернативный, более понятный синтаксис
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
Редирект запросов с не-www на домен с www префиксом
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
RewriteRule ^(.*)$ http://www.domain.com/$1 [R=301,L]
или же альтернативный вариант
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L]
Редирект запросов можно осуществлять также с помощью скриптов, отправляя клиенту необходимые заголовки.
HTTP/1.1 301 Moved Permanently
Location: http://www.newdomain.ru/newdir/newpage.htm
PHP редирект
<?php
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://www.newdomain.ru/newdir/newpage.htm”);
exit();
?>
ASP редирект
<%@ Language=VBScript %>
<%
Response.Status=“301 Moved Permanently”
Response.AddHeader “Location”, “http://www.new-url.com”
response.end
%>
ASP.NET редирект
<script runat=“server”>
private void Page_Load(object sender, System.EventArgs e)
{
Response.Status = “301 Moved Permanently”;
Response.AddHeader(“Location”,“http://www.new-url.com”);
}
</script>
ColdFusion редирект
<.cfheader statuscode=“301” statustext=“Moved permanently”>
<.cfheader name=“Location” value=“http://www.new-url.com”>
JSP (Java) редирект
<%
response.setStatus(301);
response.setHeader( “Location”, “http://www.new-url.com/” );
response.setHeader( “Connection”, “close” );
%>
CGI PERL
$q = new CGI;
print $q->redirect(“http://www.new-url.com/”);
Ruby on Rails
def old_action
headers[“Status”] = “301 Moved Permanently”
redirect_to “http://www.new-url.com/”
end
if ($host = ‘www.domain.com’ ) {
rewrite ^(.*)$ http://domain.com$1 permanent;
}
Найдите нужного исполнителя через каталог seo-компаний Рунета.
Комментарии
декабря 5, 2008 at 12:46
1А переносится и тиц и pr сразу, или только одно?
декабря 5, 2008 at 12:59
2PR переносится при 301 редиректе, а вот по поводу тИЦ, он же для сайта в целом считается. Надо директиву Host в robots.txt прописывать, чтобы бот яндекса склеил старый и новый сайт и тогда тИЦ тоже склеится.
декабря 24, 2008 at 04:29
3Теперь понятно, спасибо…
января 14, 2009 at 11:42
4Скажите, а как это реализовать к примеру на том же livejournal.com или liveinternet.ru ?
января 14, 2009 at 01:25
5Боюсь, что в ЖЖ и Ли.ру редирект сделать невозможно, так как он должен выполняться на стороне сервера: .htaccess, сам исполняющийся файл или SSI вставки. Если у вас есть доступ к управлению хотя бы вашим поддоменом в ЖЖ, тогда вы сможете сделать редирект. Попробуйте поискать в настройках, однако, из своего опыта скажу, что такого я там не встречал.
января 25, 2009 at 11:14
6спасибо
а когда пр перетечет, при следующем апе только?
января 25, 2009 at 11:54
7PR перетечет быстро, но вы о его новом значении узнаете только после следующего апа.
января 25, 2009 at 12:05
8а на выдачу как повлияет?
например, страница по запросу находится в топ10, я на ней делаю редирект на другой адрес, но страница назначения идентична, и контент и заголовки
поменяется ли адрес в выдаче гугла?
января 25, 2009 at 12:17
9Алексей, теоретически да, адрес должен поменяться в Google (для склейки адресов в яндексе, необходимо использовать директиву Host в файле robots.txt). Но тут надо быть весьма осторожным. Мне, например, не приходилось приносить большие жертвы ради эксперимента.
На одном из своих сайтов менял урлы и делал редирект со старых на новые. На сайте было порядка 20-30 тыс. страниц, склейка происходила около месяца, может чуть больше (опять же, говорю про Google).
февраля 24, 2009 at 05:18
10недели две назад купил хороший домен и сделал редирект. Роботс тоже отэдитил.
Все прекрасно работает.
Вот сейчас сижу ждут перетекания тИЦ..(а его нету
марта 7, 2009 at 09:41
11Как сделать редирект с domen1.ru/forum на forum.domen2.ru
марта 7, 2009 at 09:46
12@RazdoR: так и делайте, как написано выше… Если стоит apache, то в папку domen1.ru/forum кладете .htaccess файл, где прописываете 301 редирект на поддомен.
Примерно так )
марта 12, 2009 at 03:09
13А в .htaccess обязательно прописывать редирект вида:
Redirect 301 /old-page.html http://new-domain.ru/new-page.html
а если будет указано:
Redirect /old-page.html http://new-domain.ru/new-page.html ?
марта 12, 2009 at 03:37
14сигнализатор, без проблем, юзайте так, как вы показали.
апреля 6, 2009 at 08:44
15Сделал 301 редирект, гугль быстро сменил адреса страниц в поисковой выдаче, а вот яндекс до сих пор старые адреса выдает.
(прошло дней 10-15). Или для яши нужны свои правила?
У меня блог стоит в корне домена, я его перенес в папку, а в корне хочу сделать сайт.
Я делал редирект всего сайта на директорию…Подождать реиндексации. снять редирект и делать сайт в корне. Но время поджимает а яндекс не шевелиться.
Я так понял, лучше каждую страницу прописать 301 редиректом (около 50 стр).
То есть примерно так?
Redirect 301 /old-page.html http://new-domain.ru/new-page.html
Redirect 301 /old-page1.html http://new-domain.ru/new-page1.html
Redirect 301 /old-page2.html http://new-domain.ru/new-page2.html
Redirect 301 /old-page3.html http://new-domain.ru/new-page3.html
Или естть другой способ? А может просто не париться и плюнуть на яшу?
апреля 8, 2009 at 11:25
16Привет,
> RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
> RewriteRule ^(.*)$ http:\/\/www\.%{HTTP_HOST}\.\/$1 [R=301,L] (маска конечного адреса поправлена)
в RewriteCond нужно добавить маску, проверяющую, что URL не является IP. Иначе, если сайт на выделенном адресе и пользователь ввел IP в браузер (мало ли по какой причине) получим xxx.xxx.xxx.xxx -> WWW.xxx.xxx.xxx.xxx
апреля 12, 2009 at 10:18
17тогда уж вот так:
RewriteCond %{HTTP_HOST} !^www\.(.*) [NC]
RewriteRule ^(.*)$ http:\/\/www\.%{HTTP_HOST}\.\/$1 [R=301,L]
а то в rewriterule, предложенным комрадом GPS, после {HTTP_HOST} добавляется лишняя точка.
апреля 15, 2009 at 10:30
18Здравствуйте!
Спасибо за пост.
Только у меня не работает 301 редирект
Redirect 301 /old-page.html http://new-domain.ru/new-page.html
прописала для нужных страниц в .htaccess
Ответьте, пожалуйста, в чем может быть причина
http://www.extremegamez.ru/
апреля 15, 2009 at 10:52
19Алена, нужно убедиться, что включен модуль mod_alias в апаче. Или же используйте вместо этого rewrite модуль. Вариантов же редиректа множество, как видите. Попробуйте несколько разных. Если не получится, то просите админа сервера вам помочь.
апреля 20, 2009 at 12:52
20А что все-таки в robots.txt для Яндекса вписать для редиректа – можно подробнее?
апреля 20, 2009 at 06:51
21Спасибо огромное. Долго искал подобную статейку
Комментирование этой статьи закрыто.