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 и Яндекс.
Здравствуйте.
Сделан редизайн сайта , все страницы сейчас статические — будут динамические. Посмотрите пожалуйста , правильный ли у меня файл .htaccess :
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^(.*)\.html$ $1.php [R=301,L]
И ещё вопросик:
загружаю на сервер новые файлы PHP — а старые html пока оставлять(в том числе и index.html)? Статические страницы удалять после того, как начнёт работать 301 редирект?
А файл .htaccess сохранила в кодировке utf-8 — так?
Заранее спасибо!
Владимир, вручную задайте редирект с одной страницы на другую как это было указано в статье в пункте «простой редирект».
Галина, по правилу, увы, точно не подскажу — если страницы будут иметь одно и то же название, просто разное окончание (хтмл и пхп), то похоже на правду. Старые пока что оставляйте, пока поисковые системы не обновят свои ссылки их удалять не нужно. По поводу index.html, скорее всего нужно будет сделать настройку PHP дабы считывался файл index.php а не index.html — можно попросить хостера это сделать, либо удалить/скрыть этот файл. По кодировке utf-8 все ок.
Здравствуйте, подскажите как перенаправить страницы, яндекс преобразует #! в параметр ?_escaped_fragment_= . Нужно, чтобы страницы вида http://www.site.ru/?_escaped_fragment_=/page_1#!/ (page_1 -разные страницы на сайте), переходили на страницы вида http://www.site.ru/#!/page_1
Антон, не смогу подсказать решение этого вопроса.
Здравствуйте!
Подскажите как сделать редирект 301, если в .htaccess
прописано: DirectoryIndex /glavnaja.html
При добавлении RewriteEngine On
сайт не открывается ни по одному из доменов.
Спасибо
RoooM, если не открываются сайты, есть подозрение что ошибка где-то в синтаксисе htaccess, не совсем понял причем тут DirectoryIndex, попробуйте прописать редирект без него, посмотрите работает ли все, а потом вернете эту строку в файл
Сайт сконфигурирован так, что страницы index — нет, а стартовая — glavnaja.html
Без этой строки ничего не открывается.
При добавлении RewriteEngine On…
Сам редирект срабатывает — набираю адрес сайта без — он переводит на www
но ошибка 501!
Пробовал этот редирект направить сразу на glavnaja.html — тоже не то.
Добрый день, я не понял где старая страница с которой я ставлю редирект на новую
Redirect 301 /site1/page1.htm http://www.site2.com/page2.htm
/site1/page1.htm — это новая страница на которую буду переходить при открытии http://www.site2.com/page2.htm?
спасибо
RoooM, не смогу, увы, подсказать почему там ошибки.
Костя, наоборот, синтаксис следующий — «Redirect 301 старый_адрес новый_адрес»
Проблему решил!
Позвонил провайдеру — у них какая-то своя CMS, к редактированию которой (шаблон, стили ксс, настройки сайта) — доступ они не дают! Но сами быстро исправили и все работает. Себя на сайте рекламируют как СУПЕР ПРОФИ. А элементарные и важные вещи (как склейка доменов) своим клиентам не делают!!!
Бывает сегодня и такое!
А как склеить домен с доменом на бесплатном хосте — где нет php и других выше описанных методов?
гид, тут нужно искать варианты редиректа без php, насколько я знаю есть один через МЕТА тег, но лично у меня не получилось, когда пробовал сделать такое на бесплатном хостинге от Blogspot.
Если на сайте все урлы красивые, но при этом есть дубли страниц с не читаемыми ссылками и при этом их объединяет то, что везде есть «?». Что бы не делать редирект всего этого, можно ли в robots.txt добавить запись: Disallow:/*? это якобы запрещает поисковикам индексировать страницы в урлах которых содержится знак «?»
Я когда-то искал инфу по robots.txt, в итоге использую у себя такие 2 строки:
Disallow: /*?*
Disallow: /*?
Тут главное не сделать такой robots для сайтов без ЧПУ — отвалится большая часть страниц)
Если у главной страницы сайта дубликаты, например:
site.ru/
site.ru/index.html
site.ru/index.php и тд,
будет ли корректна такая запись:
Redirect 301 /index.htm http://site.ru/
Redirect 301 /index.php http://site.ru/
Димыч, да, вроде бы, все правильно) Установите и попробуйте будет ли редирект работать.
Всем доброго времени суток… Мне нужно сделать с http://www.wwdssurveys.com/ на http://wwdssurveys.com/ подскажите, как это сделать, а то помоему так как я попробовал не катит — что то сайт не грузился пришлось вернуть как было… сейчас так:
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ — [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
rubendavoyan, нужно оставить тот код, что пишет вордпресс а сверху добавить строки, которые указаны в данной статье в разделе «Перенаправление домена с www на без-www» второй вариант с более понятным синтаксисом (конечно в этом добавляемом коде нужно указать свои домены).
Нужно с www.wwdssurveys.com на wwdssurveys.com
Т.е. в итоге должно получится так???:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.wwdssurveys\.com$ [NC]
RewriteRule ^(.*)$ http://wwdssurveys.com/$1 [R=301,L]
# BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ — [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# END WordPress
rubendavoyan, да, укажите и проверьте обязательно будет ли редирект работать — должна каждая страница при заходе с указанием с www автоматом перебрасываться на обычный адрес.
Большое спасибо! Всё работает! Кстати, кто знает как можно бесплатно раскрутить сайт? А то сейчас на мели, а посещения падают — что делать? Кто поможет? Заранее спасибо!
Вопрос чайника: а где посмотреть прописан или нет этот 301 редирект на сайте?
JZ-brother, проверить очень просто — нужно написать в адресной строке ссылки на сайт с www и без www — если при этом будет автоматические перебрасывать с одного варианта на другой, то 301 редирект прописан (он указывается в htaccess)
rubendavoyan, гуглить в интернете статьи «как бесплатно раскрутить сайт» — советов более чем достаточно, кстати, когда-то в блоге была статья 7 источников трафика для молодых и перспективных блоггеров — там есть парочка вариантов.
Добрый день, подскажите пожалуйста если доменное имя имеет вид domain.kiev.ua
как правильное его прописать в 3 и 4 строке?
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTP_HOST} ^www.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain.com/$1 [R=301,L]
forwardo, вместо доменной зоны com подставляете kiev.ua, то есть например RewriteCond %{HTTP_HOST} ^www.domain\.kiev.ua$ [NC]
Tod, благодарствую
Скажите, а перед тем как настраивать редирект со старого сайта на новый, файлы надо заливать на новый хостинг или нет? Этого нигде не написано
Leo, да, конечно, редирект это финальный штрих для поисковиков — сначала пенеросится сайт, а потом делается редирект.
Здравствуйте. Мне нужно написать 301 редирект для /index.html. Чтобы все попадали на главную страницу через «сайт/», а не сайт/index.html. Какой в таком случае должен быть синтаксис в htaccess?
Nivel, к сожалению, точный синтаксис не подскажу, я бы погуглил готовое решение — задача, в принципе, стандартная.
Приветствую, отличная статья. Я понимаю что этот сайт на вордпрессе, но передо мной встала более извращённая задача на блогспоте, а в поддержке гугла все как обычно или молчат, или посылают на совершенно не имеющие отношения к делу статьи. Гугл такой гугл. Так вот, взываю о помощи! Ситуация следующая. Был себе блог на блогспоте, человек через пару лет его ведения решил перейти на свой домен, после чего прямо в настройках блогспота он был куплен (регистратор godaddy.com, видимо с гуглом договорённость у них, или это дочка гугла, не суть). Прошёл ещё год, блог обрастал весом, и «внезапно» обнаружилось, что доменное имя не очень «политкорректное» и его надо срочно поменять. И вот встала задача, не трогая расположение блога (который на хостинге гугла, как я понимаю) сменить имя и сделать редирект на него с прошлого, чтобы слить его вес. НО! до .htaccess не добраться, ибо это блогспот. Тут все мои познания резко заканчиваются и я не знаю что делать. Буду благодарен за любую информацию!
mudanzan, если я правильно понял, то задача поставить редирект с прошлого домена на новый, при том что сайт не меняется и находится на blogspot? Тут вижу 2 варианта — во-первых, поставить в настройках самого домена (в godaddy) редирект (перенаправление) на новый — такая опция у них вроде как есть. Второй более экзотический — открыть новый блог с новым доменом и импортировать туда всю информацию со старого — на старом поставить редирект (через МЕТА теги) или с каждого поста блога поставить ссылки «читать далее» на новый — если там был трафик.
Ставлю 301 редирект на страницах старого сайта oldsite.ru/page, но при переходе на новый вижу newsite.ru/?q=news
Боюсь, при таком раскладе вес страницы поисковик не передаст вес старой страницы на новую. Как избавиться от этого «?q=news» ???
Всем привет!
У меня такой вопрос:
Сделал 301 на все статьи из одной рубрики основного домена на отдельный поддомен.
Индексация прошла.
Теперь вопрос: можно ли удалить старые статьи из основного домена, и убрать редиректы?
Ведь большое количество редиректов дает нагрузку на сервер, а рубрик еще много.
Спасибо!
Дмитрий, ну насколько я понимаю, нужно подождать когда на новом домене все проиндексируется, склеятся показатели (тиц, пр) и потом удалять со старого все.
Добрый день, у меня тоже маленький вопрос. Есть сайт написан на хтмл, без CMS. Сейчас сделан новый сайт на Ворд пресс, ссылки на старом имеют вид http://сайт.ru/index1.htm На новом соответственно все ссылки будут другими http://сайт.ru/название страницы, так как в движке ЧПУ. Осталось только перенести новый сайт на хостинг и заменить старый. Чтобы все позиции сохранились нужно делать редирект для всех страниц по типу «Redirect 301 /site1/page1.htm http://www.site2.com/page2.htm» Я правильно поняла?
Анна, да все правильно. Вообще при переносе подобных проектов с одной CMS или обычного сайта я стараюсь хоть как-то сохранить структуру. Например в вашем случае в «Постоянных ссылках» можно выбрать ЧПУ при которому будет идти http://сайт.ru/название_записи без категорий, дат и т.п. Вот еще может пригодиться статья как добавлять окончание .html для URL страниц в WordPress.
Привет!
У меня случай, как мне кажется, посложнее. Может быть вы знаете решить следующую проблему.
Сайт на php. Одна из страниц сайта открывается по двум адресам (т.е. имеем дубли):
site.ru/girls/
site.ru/girls/nice_girls/
Первый урл неправильный и на него имеется много внешних ссылок. Хотел перебросить вес этих ссылок на правильный урл. Для это прописал в .htaccess следующее:
Redirect 301 /girls/ http://site.ru/girls/nice_girls/
Но при запрашивании страницы по любому из этих адресов выдается ошибка с сообщением:
Moved Permanently
The document has moved here.
Под словом “here” подразумевается очень длинная ссылка: http://site.ru/girls/nice_girls/nice_girls/nice_girls/nice_girls/nice_girls/… &mod_rewrite_path=girls/nice-girls/nice-girls/&mod_rewrite_path=girls/nice-girls/
Если у вас есть идеи как сделать редирект, буду рад с ними ознакомиться)
Ярослав, к сожалению, не смогу подсказать. Если у вас для сайта используется определенная CMS, возможно, следует поискать плагин редиректа.
Спасибо за ответ)
Будем думать дальше)
Привет, Тоd
был сайт annyamway.ru
сделал редирект как в статье:
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.dostavka-npa.ru/$1 [R=301,L]
В опере показывает такую картину (куча повторения):
http://dostavka-npa.ru/?password-protected=login&redirect_to=http%3A%2F%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2Fdostavka-npa.ru%2F (прошу прощения, это такая длинная фигня в командной строке вылазит)
Там на входе еще пароль стоит (на плагине сделан) но он дает только вот это. ?password-protected=login&
Все остальное дает редирект — какой-то странный повтор…
Что за ерунда, не подскажешь?
В ИЕ так выглядит:
http://dostavka-npa.ru/?password-protected=login&redirect_to=http%3A%2F%2Fdostavka-npa.ru%2F
Влак, действительно какая-то ерунда, не смогу подсказать, увы.
Всем здрасти, вот маленько не поняла про вес сайта,если у меня есть сайт 1.ru я могу часть тиц или pr перетащить на сайт 2.com?
Валерия, нет, по частям вес не передается.
Добрый день! Подскажите пожалуйста, у нас были изменены названия страниц (например
с http://VeloRuss.ru/good7055.html на http://veloruss.ru/Velosiped-Stels-Navigator-800-2013_7055t.html)
, еще год назад,но в поиске появляется появляется то та то другая версия.
Вопрос можно ли убрать 301 редирект. Когда же можно его убрать, и нужно ли его вообще убирать?
Евгения, я бы оставил 301 редирект, он по сути никому не мешает. А вот то, что в выдаче появляется старая страница — с этим нужно разобраться: есть ли на нее ссылки откуда-то извне или на самом сайте. По сути, получаются дубли страницы — можете погуглить как с ними бороться, для разных cms имеются разные варианты.
Здравствуйте, подскажите пожалуйста, нужно сделать редирект со страницы http://www.site.com/1/2/3/ на страницы http://www.site.com/1/
CMS Joomla
Как тогда нужно прописать?
Здравствуйте
подскажите плиз..
сделали редирект со старого домена на новый
==
Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*) http://www.NEWDOMEN.ru/$1 [R=301,L]
==
все работает, НО картинки ../../img.jpg (png, gif)
не редиректят, отдают 200 отклик
Как прописать редирект, который бы отправлял со всех урлов где на конце .jpg .gif .png
на главную страницу нового домена?
Спасибо
Александр, смотрите в начало статьи там где рассказывается о простом редиректе.
Артем, если честно, не знаю, нужно погуглить решение или почитать про синтаксис htaccess.
Здравствуйте,у меня такой вопрос, Плагин All in One SEO Pack — показал что у меня — адрес сайта biznes111.ru — основной адрес сайта тоже biznes111.ru. Как думаете мне нужен редирект?