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-компаний Рунета.
48 Ответов
декабря 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Спасибо огромное. Долго искал подобную статейку
мая 18, 2010 at 12:55
22вопрос такой: а www.mysite.ru (pr3) www.mysite.ru/index.htm (pr2) следует ли сливать через редирект 301?
мая 20, 2010 at 11:01
23Меня интересует такой момент: при настраивании редиректа старого домена на новый – у меня robots.txt тоже переадресовывается. Я не пойму – как это исправить – что бы robots.txt не переадресовывался вместе со всем сайтом???
Редирект делаю так:
RedirectMatch 301 /(.*) http://www.newsite.ru
Т.е. все переадресовываю на главную страницу нового сайта. Стоит ли так вообще делать?
И все-таки, как сделать – что бы robots.txt не переадресовывался.
мая 22, 2010 at 05:48
24а если прописывать в robots.txt host: domen , то поисковики произведут склейку домена)))))))))
мая 24, 2010 at 05:09
252Сергей: как раз и надо прописывать в роботс.ткст хост:домен чтобы кто-то не склеил свой домен с твоим
мая 25, 2010 at 10:48
26Уважаемый автор и коментаторы! Что вы можете подсказать по поводу возможности передачи ТИЦ и Pr с одного домена на другой
если тематика этих сайтов отличается и это разные сайты.
То есть – есть домен (сайт с него перенесли на другой домен) с ТИЦ и Pr и нужно както ТИЦ и Pr перенести на совсем другой сайт по тематике.
Каке варианты использовать ТИЦ и Pr для повышения ТИЦ и Pr целевого сайта?
мая 27, 2010 at 10:07
27Автор, огромное спасибо за статью. Очень пригодилась! Как раз сменил движок на сайте, очень нужен редирект:)
Респект тебе и уважуха!
июня 1, 2010 at 01:24
28в htaccessя прописал так
Redirect 301 /production/catalog/38?PHP=cceddb78b46be00c6584aedfb7acd18b http://www.uvservice.ru/production/catalog/38
но почему-то не работает редирект. Имеет значение где в htaccess стоит эта запись в начале или в конце? а может нужно apach перезапустить?
или может кто знает как сделать 301 аналогичный указному выше редирект используя
<IfModule mod_rewrite.c> RewriteEngine On RewriteCond RewriteRule
</IfModule>
июня 2, 2010 at 10:10
29Как мне с помощью RewriteRule превратить ссылку http://mydomain.com/catalog/index.php?page=3 в http://mydomain.com/catalog/page_3/ чтоб обязательно 301 редирект был. Помогите никак не получается.
июня 3, 2010 at 11:22
30Редирект сделали, пузомерки перетекли на новый домен. Старый со временем удаляем /просрочен скажем/. Внешнее ссылочное было на старый домен и при редиректе учитывалось для нового. После удаления старого домена получается что внешнее ссылочное для нового домена утеряно. Или я не до конца понимаю последствия такого “переезда” ?
июня 5, 2010 at 02:26
31Перепробовал все кроме редиректа с php – не редиректится у меня почему-то (((
Делал так:
Redirect 301 http://flora-online.ru/catalog.php?cat=podsoln http://www.flora-online.ru/podsolnuhi/
а нужно-то всего-навсего перенаправлять максимум страниц 10 с /catalog.php?cat=podsoln на новую страницу http://www.flora-online.ru/podsolnuhi/
Стоит Joomla SEO (кстати Artio тоже почему-то не перенаправляет)
Пробовал и RedirectPermanent, и Redirect Permanent, и Redirect 301, и с/без www, и с/без http://www.flora-online.ru/ – результат один – загружается главная страница :(
Где я мог накосячить?
Спасибо
июня 6, 2010 at 04:35
32Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www\.(.*) [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]
спасибо за такую абракадабру она действительно работает. Хороший сайт и автору статьи спасибо.
июня 9, 2010 at 01:10
33А если блог открывается нормально и с www и без, значит редирект уже сделан, да?
июня 13, 2010 at 05:56
34Вот еще полезная штука, как сделать редирект с index.php на корень сайта.
Для редиректа 301 вида “ваш_сайт/index.php” на “http://ваш_сайт/” :
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://ваш_сайт/ [R=301,L]
июня 20, 2010 at 07:56
35Стоит ли запрещать в robots.txt сылки с 301 редиректом?
июня 20, 2010 at 08:30
36Мне не ответили, но я попробую еще один вопрос задать. У меня на блоге вордпресовском в адрес страниц включено название категории сайт/категория/пост. Если я уберу оттуда категорию, то все страницы вылетят из индекса. Подскажите как сделать чтобы не вылетели. Прописать где то редирект? на все старые адреса?
июня 23, 2010 at 05:56
37Как ни странно, но “Редирект запросов с не-www на домен с www префиксом” не работает так, как нужно… Все замечательно, но при попытке перейти на главную http://site.ru получаем вместо http://www.site.ru адрес http://www.site.ru/site.ru/
А во втором из предложенных вариантов – вообще http://www..com/
июня 23, 2010 at 06:05
38Hmury, используйте логгинг в мод-реврайте.
httpd.apache.org/docs/2.0/mod/mod_rewrite.html#rewriteloglevel
июня 23, 2010 at 09:36
39Спасибо, разобрался – оказывается это Джумла виновата, точнее sh404sef, установленный на ней. В нем в настройках был забит основной адрес сайта именно без www…
А так все работает без дополнительных изменений.
июня 29, 2010 at 09:50
40Подскажите пожалуйста. А как сделать лучше сели у меня есть поддомен основного сайта. По совсем другой тематике. Сайт по тихоньку раскручивается. Хочу сделать из него самостоятельный сайт а не поддомен. Как лучше это сделать? Заранее благодарю за ответ.
июня 29, 2010 at 11:30
41по ходу тут только избранным отвечают :(
июня 29, 2010 at 11:41
42vedroid, в тех вопросах, которые касаются “где я накосячил”, к сожалению, я некомпетентен, так как подробно не знаком с деталями, подобное стоит обсуждать с администратором или запостить на фрилансерский сайт. А также используйте логи.
Nata, это вам решать, как лучше сделать. И в первом и во втором варианте есть свои преимущества и недостатки.
июля 3, 2010 at 01:30
43Добрый день. Прошу совета.
Есть сайт, на котором до недавнего времени был только форум, расположенный в корне (IPB). Сейчас сайт модернизирован, форум целиком переехал в папку /forum, а в корне расположен другой движок и полноценный сайт на нем.
Как сделать 301 редирект, чтоб со старых страниц форуме редиректило на новые, расположенные в папке /forum? Просто редирект всего из корня в эту папку – не выход, так как необходимо, чтоб в корне полноценно отображался новосозданный сайт.
Спрашивал уже в различных местах, нигде не могу дать рабочее решение, к сожалению:(
июля 4, 2010 at 12:49
44DEM84, попробуйте подобную конструкцию в корне сайта в htaccess добавить:
Здесь вторая и третья строчка проверяют отсутствие запрашиваемого в урле файла и если его нет, то происходит реврайт, в данном случае редирект всех страниц с 301 ошибкой на раздел /forum/.
По идее должно помочь. Соответственно, в подкаталоге форума необходимо оставить его родной htaccess, чтобы первый не наследовался.
июля 4, 2010 at 12:44
45Devaka, большое спасибо! Ваша конструкция подошла частично: для облегченной версии форума, к примеру, которая имеет адрес типа http://site.ru/forum/lofiversion/index.php/t221.html
А загвоздка в том, что на форуме обращение ко всем остальным страницам идет через index.php:
http://site.ru/forum/index.php?showtopic=xxx
http://site.ru/forum/index.php?showforum=xxx
http://site.ru/forum/index.php?showuser=xxx
В то же время в корне обновленного сайта тоже есть index.php (от нового движка), который открывает главную страницу.
Нет ли такого метода, чтоб редиректить на /forum все обращения к index.php с любыми параметрами в УРЛе?
июля 4, 2010 at 04:46
46DEM84, используйте конструкцию QUERY_STRING для этих целей.
Примерно (!) так:
Поищите на форумах другие возможные решения. Я думаю выход есть.
июля 17, 2010 at 07:08
47Добрый день всем!
Попробовал все вышеперечисленные методы – не помогает.
А суть в том, чтобы при наборе адреса oooknt.ru открывалась бы страница oooknt.ru/potolki/.
При этом главная страница существует, но для компании приоритет oooknt.ru/potolki/
июля 21, 2010 at 01:54
48Добрый день! Перенаправляю сайт http://www.mera-systems.com/
Пробую перенаправить 1 страницу http://www.mera-systems.com/support/ на http://www.aloe-systems.com/support
Redirect 301 /support http://www.aloe-systems.com/support$
Он перенаправляется только адрес становится http://www.aloe-systems.com/support$?q=support
Скажите что я делаю неправильно? почему появляется лишнее в адресе ?q=support
Ответить