301 редирект — зачем он нужен и как сделать 301 редирект
Про 301 редирект уже, наверное, сказано и пересказано множество раз в блогах, форумах и т.п. Но, как оказывается, не до всех эта информация вовремя доходит (тут я как бы намекаю на себя:). За более чем 3 года в сети я слышал про 301 редирект множество раз, иногда даже собирался его «попробовать», но давайте посмотрим фактам в лицо — так этого и не сделал. А зря! Все началось достаточно прозаически — у меня есть один сайт, который постоянно «колбасит» в плане индексации поисковиками. Вроде и ссылки там есть, и контент нормальный, а он все ни в какую не хочет стабильно работать. У меня уже почти закончились варианты подобного поведения, но тут я вспомнил про основы основ SEO и вообще продвижения — 301 редирект.
Беглый опрос в твиттере показал, что реально я чуть ли не один «забиваю» на этот важный момент. Большинство единогласно ответило, что в обязательном порядке устанавливает 301 редирект сразу при создании сайта. Более того, тут мне недавно попросили по разработке сайта добавить этот же самый 301 редирект для них, поскольку просьба пришла от продвигающей и конторы. Учитывая все эти моменты и «намеки судьбы» я понял 301 редиректу быть!
Зачем вообще нужен 301 редирект? — спросите вы — есть несколько ситуаций в которых его можно применить:
- Для склейки домена с www и без www. При этом показатели и ссылочный вес будет совмещаться, а то иногда бывает, что для домена с и без www они могут отличаться.
- При смене домена со старого на новый 301 редирект позволит опять же сохранить показатели и ссылочное (насчет тИЦ не знаю, но PR точно).
- При переносе страницы на сайте чтобы поисковики и посетители попадали на новую страницу вместо старой неработающей.
- Если есть пиаристые домены со ссылками, которые по каким-то причинам вами не используются, возможно, просто некогда, то теоретически можно использовать 301 редирект на другие свои сайты. Хотя это метод такой — дополнительная возможность что ли, основные все же первые три.
Вообще 301 редирект нужен как для пользователей, так и для поисковых роботов — позволяет сориентировать тех и других, что есть новый сайт, домен, страница и без лишних вопросов переадресовывает их туда. Кроме того 301 редирект произведет склейку показателей сайтов и позволит не потерять позиции в поисковых системах.
Как сделать 301 редирект
Решений для этой задачи есть множество, все зависит от того какими техническими средствами обладает ваш хостинг. Также в интернете есть много статей по 301 редиректу, которые можно почитать, я приведу лишь несколько, на мой взгляд, самых типичных ситуаций.
Простой редирект
Производится в файле .htaccess или httpd.conf для Apache. Самый простой вариант простого 301 редиректа для переадресации на новый домен выглядит следующим образом:
Redirect 301 / http://www.site.com/index.htm |
В этом случае все страницы старого сайта будут перенаправлены на новый. Если вы хотите сделать 301 редирект для одной страницы, то можно использовать что-то вроде:
Redirect 301 /site1/page1.htm http://www.site2.com/page2.htm |
Вот еще парочка примеров простого 301 редиректа:
RedirectPermanent / http://www.site2.com/ |
RedirectPermanent /old-catalog http://www.site2.com/new-catalog/ |
Можно поставить 2 условия — для редиректа сразу (нужно помнить что порядок следования важен):
Redirect permanent /test http://www.test.com/ Redirect permanent / http://enter.test.com/ |
Здесь при попадании пользователя или робота в директорию test он перенаправится на www.test.com, все остальные попадут на enter.test.com. Для этого 301 редиректа на хостинге должны быть включены модули mod_alias (для поддержки Redirect, RedirectPermanent и RedirectMatch).
301 редирект с помощью mod_rewrite в .htaccess
С модулем mod_rewrite вы сталкивались достаточно часто даже не подозревая этого. В частности речь идет про постоянные ссылки (permalinks) как полезный инструмент в seo оптимизации wordpress. Если в админке настроите эти самые ссылки и после этого зайдете в файл .htaccess, то обнаружите там целый ряд правил для переадресации через директиву RewriteRule. Кроме того нужно проверить чтобы была подключена опция 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] |
или же альтернативный вариант:
Options +FollowSymLinks RewriteEngine On RewriteCond %{HTTP_HOST} !^www\.(.*) [NC] RewriteRule ^(.*)$ http://www.%1/$1 [R=301,L] |
Вообще использование www в названии сайта само по себе устарело, но иногда до сих пор встречается. Если вы создаете новый сайт, то конечно сразу указываете везде без www, но если получили «готовый продукт», то нужно смотреть как домен отображается в выдаче Google и Яндекс — такой редитект и оставляете дабы ничего кардинально не менять.
301 редирект старого домена на новый:
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] |
301 редирект через PHP
Вся суть 301 редиректа через PHP, ASP, JavaScript в передаче клиенту заголовков:
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(); ?> |
Данный код лучше всего вставлять в начало PHP скрипта чтобы до него ничего не выводилось (echo или print). За пояснение спасибо автору этой статьи где также найдете информацию про установку редиректа на ASP, ColdFusion и т.п., просто с php самый популярный вариант.
Примечания по 301 редиректу
Напоследок пару моментов по 301 редиректу, которые нужно помнить и с которым я так или иначе столкнулся:
- Во-первых, последовательность правил редиректа учитывается. Так что если какое-то правило не выполняется, проверьте нет ли других редиректов и не мешают ли они.
- Во-вторых, помнить синтаксис и все особенности 301 редиректа достаточно сложно, поэтому иногда здорово помогает логика и перебор некоторых вариантов:) Хотя, конечно, лучше читать официальную документацию.
- В-третьих, после внедрения 301 редиректа обязательно проверьте правила на работоспособность, зайдите не только на главную, но и пройдитесь по разделам, страницам сайта дабы потом не было проблем с этим.
Данную статью отлично дополняет 301 редирект – самое полное руководство от SeoProfy.
Если у вас есть что добавить по 301 редиректу — пишите:)
P.S. Постовой. В наше время каждый день появляется множество интересных интернет проектов. Хотите знать все про стартапы тогда читайте новый увлекательный блог StartupWay.
После аудита и оптимизации веб-проекта следует комплексная раскрутка сайтов в поисковых системах Google и Яндекс.
Немного не понял. А если страницы нивкоем случае не будут менять адресс, то 301 редирект не нужен?
И второе, как правильно склеить www.site.ru и site.ru?
Иван, по первому — просто при создании сайта определяете основной домен (предпочтительно без www) и ставите 301 редирект чтобы потом не возникало вопросов.
По второму — об этом есть в статье — см. пункт «перенаправление домена с www на без-www».
Хотелось бы для увидеть как сделать редирект ссылок вида http://site.ru/link1.htm на http://site.ru/old/link1.htm. К примеру при обновлении сайта поставили новую CMS, а старую версию сайта перенесли в папку old/
А как его убрать? Когда своему сайту менял зону. Из зоны com в зону ru поставил этот редирект в в .htaccess Все прошло удачно. А теперь мне надо снять, убрал то, что написал, но все равно когда набираешь сайт в зоне com перекидывает на ru. А мне этого уже не надо.
После второй коммента задаюсь вопросом — кто-то вообще пост читает?!
При обновлении CMS есть 2 сложных момента — во-первых, сами ссылки страниц (ЧПУ) могли поменяться, поэтому тут во-первых, нужно узнать как сделать их такими же. Что касается самого 301 редиректа, то тут нужно пробовать что-то вроде
Либо прописывать полные пути. Ну и, если что, немного поэкспериментировать с mod_rewrite в .htaccess и приведенным примерами в статье.
Вариантов разных много, нужно самому пробовать и тестировать:)
lab, если убрал, то ничего перекидывать не должно, в противном случае глянь еще разок может где-то что-то да осталось. Просто так домен «переадресовываться» не будет.
Подскажите пожалуйста а как правильно сделать 301 редирект с site.ru на сайт.рф
Подскажите пожалуйста а как правильно сделать 301 редирект с site.ru на сайт.рф
У меня например хостер такую услугу представляет.Спросите у своего может настроят.
Техподдержка бест хостера вообще не имеет понятия что делать в таком случае, нет у них такой функциональности, вот я и спрашиваю как собственными силами это можно сделать.
Здравствуйте!
Может вопрос не совсем по теме, но все-таки спрошу.
Я делал клиенту сайт на HTML, разместил его на хостинге. Затем через некоторое время обновил сайт — поставил на тот же хостинг под тем же именем домена сайт на Джумле. Ссылки первоначального варианта уже проиндексированы поисковиками, но клиент желает видеть новый сайт, так вот можно ли (и если да, то как) использовать редирект 301 чтобы когда найдя по запросу в поисковике старую ссылку (на HTML-страницу старого варианта сайта) кликнув по ней перенаправлялся на соответствующую ссылку нового варианта сайта, или хотя бы на главную страницу.
Подскажите, пожалуйста, в этом вопросе. Или Ваше решение этого вопроса.
П.С. старый сайт uvis-tor.com.ua (пока старый вариант не сносил), а новый вариант работает по ссылке uvis-tor.com.ua/index.php. По сути на одном доменном имени расположены 2 варианта сайта. Как перенаправить со старого на новый?
Александр, я думаю можно применить код из стать там где сказано о простом редиректе. А вообще, судя по тому что 2 сайта открываются на одном домене можно попробовать просто изменить имя файла index.html который, вроде как с него грузится, после этого автоматом будет открываться index.php.
Спасибо за скорый ответ, Tod.
Я знаю, что если убрать index.html, то автоматом будет подгружаться сайт с index.php — просто хочу вообще удалить страницы старого варианта сайта с сервера (чтобы не было лишнего веса и по поисковым запросам человек не попадал на эти страницы, а автоматом перенаправлялся на новые страницы).
Просто я не опытен в самом механизме создания редиректа — можете мне «показать на пальцах» как первокласснику (или дать ссылку где это показано), что и за чем делается? как создать файл .htaccess (или не нужно?), какой код туда поместить и как дальше?
А то я просмотрел эту статью и мало чего понял, хотя сайты делаю, а с этим не знаком, аж стыдно…
Можно на примере показать как будет выглядеть редирект, например по поиску «Линия для производства пеллет» (в Яндексе у меня самая первая ссылка в поиске выдается) на старом варианте ссылка http://uvis-tor.com.ua/production_pellets_linia_ogm15.html. Нужно, чтобы из поисковика (Яндекс, Гугл,.. т.д.) посетитель автоматом переносился сюда http://uvis-tor.com.ua/index.php?option=com_k2&view=itemlist&task=category&id=21:oborudovanie-kompleksnyie-linii-dlya-proizvodstva-pellet&Itemid=198
или хотя бы на главную страницу сайта http://uvis-tor.com.ua/ (при условии, что я удалю старые страницы сайта). Помогите, как это реализовать?
Александр, точное решение я не подскажу, тебе нужно будет попробовать разные варианты из этой статьи (или возможно других). Еще раз внимательно глянуть пост и попробуй реализовать пару редиректов по моим примерам. Создаешь в корневой директории .htaccess, где пишешь что-то вроде:
Redirect 301 / http://uvis-tor.com.ua/index.php
Это для переадресации всех ссылок, а для конкретных страниц можно сделать:
Redirect 301 http://uvis-tor.com.ua/page1.html http://uvis-tor.com.ua/page2.php
Короче, нужно пробовать.
Спасибо, буду пробовать. Должно получиться.
А где увидеть, что подключена опция FollowSymLinks, т.к. редирект не работает после переезда на новый хостинг.
p.s. если www уже так устарел, то почему гугл еще с ним работает ?
а если старая страничка запрещена в файл роботс, но на ней стоит 301 редирект на новую страничку. вопрос в том на новую страничку не передается запрет файл роботса????
Андрей, роботс запрещает индексацию, но если пользователь проходит по ссылке на эту страницу, то срабатывает 301 редирект. Передает ли он тиц и все такое — вопрос непонятный, но с другой стороны зачем запрещать в роботс страницу для которой и так установлен редирект? — думаю, лучше этого не делать.
фишка в том что мне нужно убрать дубли на сайте index.php, тому и нада запретить все дубли иначе сайт умрет, а что б не терять ссылочную массу то 301 редирект, вот такая нелегкая задача, поетому и такой вопрос передает ли запрет через 301 — (
У меня вопрос: когда пользователь набирает в браузере урл старого сайта, его перебрасывает на новый автоматом? Или он все-же увидит старый сайт? Подскажите, пожалуйста.
Саша, как только вводит адрес и заходит на сайт, то сразу же перебрасывает на новый без захода по старому адресу.
как проверить работает ли редирект или нет если речь идет о перенаправлении со старой страницы сайта на новую?
rasse1, зайти по старой ссылке и посмотреть перенаправляет ли сайт на новую.
А кто подскажет как можно сделать редирект со страниц типа site.ru/catalog/category/product/15-odegda-na-4-goda-104-rost/2811-narukavniki-vyazannie.html на страници типа site.ru/catalog/product/2811-narukavniki-vyazannie.html(т.е. соответственно убрать дубли и укоротить URL), только это надо сделать массово, таких страниц порядка 1500 шт.
Alex, для массового редиректа если только меняется структура, то можно использовать разные правила htaccess со всякими * или % — это точно нужно читать в документации, я не силен в этих правилах. Но такое сделать можно.
А где именно это можно посмотреть, есть ссылочка?
Спасибо!
Aleks, погулить документацию по htaccess, думаю в сети полно примеров как можно сделать редирект такой, я просто не делал, поэтому ссылочек не знаю.
Вопрос: 301 редирет считается «черным сео»? Если прятать линки?
Илья, что значит прятать линки? я не особо знаком с черным сео, 301 обычно используется для склейки www и без него + при переезде на другой домен, остальное хз)
Не палим тему))))
А у меня такой вот вопросик, если я сделал 301-ый редирект «При смене домена со старого на новый 301 редирект позволит опять же сохранить показатели и ссылочное (насчет тИЦ не знаю, но PR точно).» Есть необходимость в удалении старого домена с «Яндекс Вебмастера?» или нет в этом необходимости? Просто старый домен нормально проиндексирован, показывает в «Вебмастере» вот такое: Загружено роботом — 89, Страниц в поиске 74. И на новом домене в «Вебмастере» показывает следующие: Загружено роботом — 3, Страниц в поиске 80.
Евгений, насчет вебмастера незнаю, тем более от яндекса. я просто сделал 301 редирект для домена пока он у меня был проплачен, 1-2 месяца повисел, потом удалился, а за это время новый сайт проиндексировался и все было норм.
Спасибо. :) Будем надеяться и у меня так произойдет. :)
Всем хай. Сделал 301 редирект через mod_rewrite, проблема — при заходе на
mysite.ru/1/2/somesort/
адрес страницы в браузере пользователя меняется
mysite.ru/ind.php?a=1&b=2&c=somesort
Как сделать, чтобы адрес оставался в виде mysite.ru/1/2/somesort/ ?
извините не понял domain\.com$ com — это поостоянный показатель или это домен вместо него указывать который стоит у меня?
Denis, вместо domain.com нужно подставить ваш домен сайта.
сделал при помощи mod_rewrite все работает на отлично, правда повозился с местом установки кода, ну это мелочи.
Здравствуйте! А если домен уже склеен в поисковых системах без www, можно убрать 301 редирект?
Misha, насколько я понимаю, да можно убирать. То есть как я делал — перенес сайт на новый домен, на старом поставил 301 редирект, старый домен закончился и редирект отпал.
А как он выглядит в ответе сервера, этот редирект?
«не сделал. А зря! Все началось достаточно прозаически – и меня есть один сайт,»
у вас ошибка в начале статьи ( не и меня есть сайт , а у меня есть сайт :) я думаю так правильнее :)
zigzag32ru, спасибо, исправил ошибку.
Все понятно и доступно! Спасибо автору за пост!!
Tod, сайт очень полезный.
Хотелось бы для people внести свою лепту. Как-то на одном своём сайте обратил внимание в статистике (года два-три назад — сейчас может по другому): без www. приходят — 70% юзеров, с www. — 30%. Так что убрав редирект, можно потерять 30% или около этого.
PaPa, не совсем понял зачем его вообще убирать? редирект для того и нужен чтобы пользователи заходящие по разному попадали в любом случае на сайт + поисковики видели его как 1 проекта, а не разные зеркала.
Спасибо, полезно!
Такой вопрос, а как определить не имея доступа к админке, есть ли на сайте 301 редирект?
Антон, если вы о варианте редиректа с www на без www, то самое простое добавить в название сайта или убрать из него указанный префикс — увидите есть ли переадресация или нет.
Tod, спасибо.
А если сайт доступен по 2 адресам одновременно (без www, и с www) значит редиректа нет?
Антон, да, можешь попробовать ввести URL этой статьи с www и увидишь что есть редирект — именно так он и работает.
Спасибо за оперативный ответ :)
Подскажите пожалуйста как сделать 301 редирект.
Нужно чтобы со страниц вида http://мой_сайт/страница1.html?start=300 перекидывало на http://мой_сайт/страница1, а с http://мой_сайт/страница5.html?start=7000 на http://мой_сайт/страница5