Что значит 301 редирект. Удаляем директорию каталога из URL

Далеко не все начинающие веб-мастера знают что такое «редирект 301″ и для чего он предназначен. Как видно из названия, данное понятие состоит из двух частей:

301 — это код статуса, возвращаемого веб-сервером клиенту (браузеру);
редирект — от англ. redirect , переводится как переадресация или перенаправление.

Общение между браузером и веб-серовром

Если вы не знаете как происходит обмен информацией между клиентом и веб-сервером, то стоит остановиться на этом вопросе поподробнее. Когда вы набираете в адресной строке вашего браузера какой-нибудь адрес и нажимаете Enter, ваш браузер отправляет запрос веб-серверу, в котором указывается имя и путь к файлу который вы ходите получить. Рассмотрим несколько примеров.

В данном случае можно сказать, что браузер обращается к серверу сайт и просит возвратить документ index.php, который находится в директории /slovar-synonymov/.

А здесь браузер обращается к серверу yandex.ru, у которого есть поддомен www. Как видно на картинке, пользователь не ввёл имя файла, который необходимо получить. Но благодаря настройкам сервера, в таком случае клиенту будет отправлен документ index.html. В этом можно убедиться если ввести в адресную строку https://www.yandex.ru/index.html. В результате вы увидите всё ту же заглавную страницу Яндекса.

Можно сделать вывод, что после обращения браузера к веб-серверу, последний возвращает ему запрашиваемый документ который и отображается на экране пользователя. Но так бывает не всегда.

Что такое код статуса запроса

Наверняка вы не раз видели в браузере сообщения об ошибках вместо запрашиваемой страницы. Если не можете вспомнить, посмотрите как они выглядят.



Если запрашиваемой страницы не существует, то сервер сообщает об этом клиенту с помощью специального кода статуса запроса. В данном случае код статуса будет равен 404, что видно на примере.

Если говорить правильно, то код статуса возвращается в любом случае, так как он является неотъемлемой частью протокола HTTP. Если страница существует и будет передана браузеру, возвращается код статуса 200 OK. Ниже приведены наиболее популярные коды:

200 — OK. Страница отдана клиенту;
301 — Moved Permanently. Страница перемещена по новому постоянному адресу;
304 — Not Modified. Страница не изменялась и может быть загружена из кеша браузера;
403 — Forbidden. Доступ к запрашиваемому контенту запрещён;
404 — Not Found. Документ не найден;
500 — Internal Server Error. Внутренняя ошибка веб-сервера.

Полный список статусов и их расшифровку можно найти .

В результате можно сделать вывод, что редирект 301 это код статуса запроса возвращаемого сервером в том случае, когда запрашиваемая страница была перемещена по новому постоянному адресу.

В каких случаях применяется редирект 301

Очень часто случается так, что веб-мастер меняет структуру своего сайта, после чего все статьи становятся доступны по новому адресу. Но как быть поисковым системам, которые успели проиндексировать сайт и запомнили старые адреса страниц? Своим пользователям они будут выдавать недостоверные результаты, которые скорее всего будут вести не на ожидаемую страницу, а на страницу с ошибкой 404 (Документ не найден). Для исправления данной ситуации и используется специальный код статуса 301, который позволяет перенаправить браузер по новому адресу.

Но это не единственный случай применения 301 редиректа. Если заглянуть в недалёкое прошлое, то в пору развития интернета почти все адреса сайтов начинались с www, что расшифровывается как WorldWideWeb. В настоящее время данный префикс считается анахронизмом и большинство веб-мастеров стараются что бы их сайт был доступен по адресу без префикса www. Но настройки большинства хостинг компаний таковы, что чаще всего сайт оказывается доступен как по адресу с www, так и без него. С первого взгляда может показаться, что всё не так уж плохо, но это далеко не так.

Дубли страниц

Очевидно, что все поисковые системы стараются выдавать своим пользователям самые релевантные (максимально отвечающие запросам) результаты. А одним из основных врагов поисковых систем являются сайты, содержащие одинаковый контент. Для чего нужен интернет содержащий кучу одинаковых страниц? Представляете, если поисковик представит вам результат где, каждый сайт будет содержать одну и ту же одинаковую информацию. Очень скоро такая поисковая система перестанет пользоваться популярностью и будет влачить жалкое существование на задворках интернета.

А теперь попробуйте догадаться, что же происходит когда сайт становится доступен по адресу начинающегося с префикса www и без него. Правильно, мы получаем дубли страниц с одинаковым содержимым, но находящиеся по двум разным адресам. Такой сайт очень рискует попасть в чёрный список поисковых систем и остаться без посетителей.

Для борьбы с дублями как нельзя кстати помогает использование редиректа 301. Когда веб-сервер в ответ на запрос типа www.mysite.com, вместо искомой страницы и статуса 200 OK возвращает статус 301 Moved Permanently и новый адрес mysite.com (уже без www), это и называется использование 301 редиректа.

Аналогичным примером дублей можно назвать ситуацию, когда одна и та же страница становится доступной по адресу mysite.com/ и mysite.com/index.html. Естественно адреса взяты лишь для примера. В каждом конкретном случае адреса могут быть самыми разными (index.php, index.htm и т.д.).

Переезд сайта на новый домен

Нередко встречаются ситуации, когда молодой сайт успешно развивается и окрепнув перерастает в более крупный проект. Для сайта подбирают и регистрируют новое доменное имя и ресурс становится доступным по новому адресу. Для того что бы не растерять постоянных посетителей, а поисковым системам дать понять что сайт переехал на новый адрес, веб-мастер должен правильно настроить код статуса 301 и отправить клиента по новому адресу. По прошествии некоторого времени (несколько обновлений поисковой выдачи) поисковые системы проиндексируют и запомнят новое доменное имя ресурса, которое далее начнёт участвовать в выдаче на тех же позициях. Данный процесс называется склейкой доменов и более подробно описывается в руководствах для веб-мастеров многих поисковых систем. Ещё почитать о переезде сайта можно к примеру .

Как настроить редирект 301

Наконец-то можно перейти к самому главному вопросу данной статьи. Как правильно организовать редирект 301? Существует несколько способов это сделать.

Редирект 301 с помощью файла.htaccess

Использование файла.htaccess подойдёт в первую очередь тем веб-мастерам, которые не хотят вмешиваться в код своей CMS или не чувствуют уверенности в своих навыках программирования.

Простая переадресация директивой Redirect

Для перенаправления всех запросов со старого сайта на новый, создайте в корне старого сайта файл.htaccess и добавьте в него строку:

Redirect 301 / http://my-newsite.com/index.html

Redirect 301 / http : //my-newsite.com/index.html

Если вам необходимо переадресовывать не все запросы, а только относящиеся к определённым страницам, используйте следующую запись:

Redirect 301 /article.html http://mysite.com/articles/article-1.html

Общий синтаксис использования директивы Redirect файла.htaccess выглядит следующим образом:

Redirect [Код] URI_FROM URL_TO
где:
Код — это код статуса запроса который будет возвращён клиенту (необязательный параметр);
URI_FROM — путь относительно корня сайта, запросы к которому буду переадресовываться;
URL_TO — новый адрес (имеется ввиду полный адрес вида http://site.com), куда будет переадресован клиент.

Использование директивы RedirectMatch

Более гибкими возможностями обладает директива RedirectMatch, которая позволяет использовать регулярные выражения для параметра URI переадресовываемой страницы. К примеру для того, что бы организовать редирект

http://myblog.ru/09-02-2016/301-redirect/ =>
http://myblog.ru/index.php?year=2016&month=02&day=09&title=301-redirect

можно использоваться следующий код:

RedirectMatch 301 /(\d{2})-(\d{2})-(\d{4})/(.*)/$ http://myblog.ru/index.php?year=$3&month=$2&day=$1&title=$4

RedirectMatch 301 / (\ d { 2 } ) - (\ d { 2 } ) - (\ d { 4 } ) / (. * ) / $ http : //myblog.ru/index.php?year=$3&month=$2&day=$1&title=$4

Одним из недостатков данных директив является невозможность использования параметров GET передаваемых в URI. Т.е. сделать обратный редирект

http://myblog.ru/index.php?p=1 => http://myblog.ru/p-1.php

не получится.

Для того, что бы иметь возможность работать с параметрами GET необходимо использовать возможности модуля mod_rewrite.

Редирект с помощью директив модуля mod_rewrite

Модуль mod_rewrite является довольно сложным в освоении, но взамен предоставляет поистине неисчерпаемые возможности модификации URL и настройки переадресации. В основе модуля лежит использование регулярных выражений применяемых к URI запрашиваемого клиентом документа. Директива RewriteRule в случае совпадения регулярного выражения с URI, выполняет замену данной строки с возможностью использования в качестве подстановки совпавших групп регулярного выражения.

Рассмотрим несколько примеров, начиная с более сложного.

Для организации редиректа

http://myblog.ru/index.php?y=2016&m=02&d=09 =>
http://myblog.ru/2016-02-09/

необходимо добавить в файл.htaccess следующий код:

RewriteEngine On RewriteBase / RewriteCond %{QUERY_STRING} ^y=(\d{4})&m=(\d{2})&d=(\d{2})$ RewriteRule ^index\.php$ /%1-%2-%3/?

< IfModule mod_rewrite . c >

RewriteEngine On

RewriteBase /

RewriteCond % { QUERY_STRING } ^ y = (\ d { 4 } ) & m = (\ d { 2 } ) & d = (\ d { 2 } ) $

RewriteRule ^ index \ . php $ / % 1 - % 2 - % 3 / ? [ R = 301 , L ]

< / IfModule >

Примечание: если не добавлять знак вопроса в конце строки замены директивы RewriteRule, то в результате в адресной строке браузера будет адрес вида http://myblog.ru/2016-02-09/?y=2016&m=02&d=09

Директива RewriteCond позволяет обращаться к переменным сервера применяя к ним регулярные выражения. Следующая за ней директива RewriteRule выполнится только в том случае, если совпадёт регулярное выражение в предыдущей строке директивы RewriteCond.

В качестве более простого примера использования возможностей mod_rewrite можно привести следующий. Переадресация типа

http://сайт/любое_слово => http://сайт/slovar-synonymov/любое_слово

выполняется следующим образом.

Всем-всем привет!

Темой прошлого — . Я кратко рассказал о его самых важных моментах и упомянул несколько функций, которые этот самый файл и выполняет. Одной из таких функций является автоматическое перенаправление посетителя с одного URL на другой, ее еще называют 301 редирект.

Что такое 301 редирект?

Как я уже сказал, 301 редирект — это автоматическое перенаправление, которое позволяет перенаправить посетителя или поискового робота с одной страницы сайта на другую или с одного домена на другой. При всем при этом, все, так называемые, пузомерки ( , вес страницы) передаются тому URL, на который происходит редирект.

Таким образом, мы получаем настоящую палочку-выручалочку при переезде сайта на другой домен и других ситуациях, о которых поговорим ниже. При этом мы практически ничего не потеряем.

Пример. Раньше блог Context-UP находился по URL: http://blog.сайт (среди Вас, наверное, есть те кто застал эти времена), затем мне захотелось, чтобы сайт находился на домене второго уровня, то есть . Для осуществления своего желания мне пришлось перенести все содержимое блога в другой каталог (папку) на хостинге, затем в панели , а , указать новый домен, чтобы роботы начали индексировать новый адрес блога. Только после всего этого, я настроил редирект в..

Теперь я надеюсь, Вы поняли, что такое 301 редирект.

Как настроить 301 редирект через htaccess?

Существует несколько способов осуществления перенаправления, но самый безопасный и простой — редирект 301 в.htaccess.

Итак, для того, чтобы файл и перенаправление, соответственно, работали, необходимо активировать, так называемые, модули. Для нашей цели можно использовать два:

  1. Mod_rewrite;
  2. Mod_alias.

Наиболее предпочтительным является первый вариант, так как при его использовании Вам не нужно будет прописывать каждый URL-страницы отдельно, а достаточно только использовать специальные команды (они ниже), благодаря которым и будет происходить редирект.

Мы, то есть простые клиенты хостинг-провайдеров, способны только активировать данный модуль для своего каталога с сайтом через файл.htaccess. Делается это просто, достаточно ввести в ранее упомянутый файл строчку:

RewriteEngine On

Работать данный модуль будет только в том случае, если он подключен в веб-сервере Apache. Поэтому уточните данный момент у администраторов.

В рамках этого урока, я хочу разобрать несколько ситуаций, в которых нам понадобится настроить 301 редирект:

  1. Если вы переезжаете с одного домена на другой;
  2. Если Ваш сайт доступен с www и без www;
  3. С протокола http на https;
  4. С одной страницы на другую;
  5. С индексного файла index.html/php на главную страницу.

Пойдем по порядку.

Переезд на другой домен

В том случае, если Вы решили переехать на другой домен, то Вам нужно прописать в файле дополнительной конфигурации.htaccess следующую команду:

RewriteEngine On RewriteCond %{HTTP_HOST} old-domen.ru RewriteRule (.*) http: //new-domen.ru/$1

301 редирект с www на URL без www и наоборот

Поисковый робот — вещь сложная, поэтому при работе с сайтом, вебмастеру необходимо учитывать множество нюансов. Как пример, для поисковой машины сайт, который доступен по адресу с www (www.site.ru) и без тридаблю (site.ru), делится на два совершенно одинаковых, дублирующих друг друга, веб-ресурса.

По этой причине, любой сайт должен быть доступен только по одному адресу: либо с www, либо без. Иначе позиции сайта не будут расти.

Редирект с www.site.ru на site.ru:

Редирект с site.ru на www.site.ru:

RewriteEngine On RewriteCond %{HTTP_HOST} ^www\.(.*) RewriteRule ^(.*)$ http://%1/$1

С протокола http на https

Используйте данный код для редиректа на безопасный протокол https:

RewriteCond %{HTTPS} off RewriteRule ^(.*)$ https: //%{HTTP_HOST}%{REQUEST_URI}

С одной страницы сайта на другую

Очень часто бывает такое, что нужно перенаправить посетителей сайта и поискового робота с одной страницы на другую. В таком случае в htaccess достаточно прописать такой код:

Redirect 301 /stranica1..html

В одно время мне понадобилось сделать такой 301 редирект со страницы, которая генерируется CMS WordPress, на главную, так как первая дублировала то, что было на второй.

С index.html или index.php на корень (слеш)

Изначально, практически на всех сайтах главная страница доступна по двум URL: http://site.ru/index.php и http://site.ru/. Это не правильно, так как получается дублирование контента главной страницы и ПС начнут пессимизировать сайт в выдаче (намеренно опускать сайт вниз).

Чтобы такого не было, нужно прописать следующее:

Если Вы хотите сделать редирект с index.html

RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.html\ HTTP/ RewriteRule ^index\.html$ http: //site/

Если Вы хотите сделать редирект с index.php

RewriteCond %{THE_REQUEST} ^{3,9}\ /index\.php\ HTTP/ RewriteRule ^index\.php$ http: //site/

Используйте данный материал, как шпаргалку, вдруг Вам понадобится. Достаточно просто скопировать нужный код и вставить его в.htaccess.

Ну а на этом все, дорогие друзья!

Не забывайте подписываться на обновления блога и делиться ссылками на уроки в социальных сетях.

До скорых встреч!

Предыдущая статья
Следующая статья

Редирект – это способ переадресации пользователей и поисковых роботов на URL адрес, который отличается от первоначально запрошенного. Существует несколько видов переадресации, некоторые из которых приведены ниже.

301 Moved Permanently

301 – постоянный редирект, который указывает на то, что запрашиваемая страница находится по новому адресу, а старый нужно считать устаревшим. Такой вид редиректа передает 90-99% ссылочной массы на новый URL.

Канонизация или склейка домена

Для склейки домена с www на без www:

RewriteCond %{HTTP_HOST} ^www.site\.com$ RewriteRule ^(.*)$ http://site.com/$1

Для склейки домена с без www на с www:

RewriteCond %{HTTP_HOST} ^site\.com$ RewriteRule ^(.*)$ http://www.site.com/$1

Для правильного выбора метода склейки нужно рассмотреть такие факторы:

  • У какого варианта выше индексация;
  • У какого варианта выше позиции в выдаче;
  • Канонизация слэша в конце адреса.

При создании проекта сайта нужно решить, использовать ли слэш в конце адреса. Для поисковых систем адреса вида:

  • http://www.site.com/category1
  • http://www.site.com/category1/

Являются разными URL. Поэтому когда решите, какого вида будут адреса у вас на сайте, нужно прописать такой код для того, чтобы убрать слэш в конце:

RewriteCond %{HTTP_HOST} (.*) RewriteCond %{REQUEST_URI} /$ RewriteRule ^(.*)(/)$ $1

или такой, чтобы добавить его:

RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !(.*)/$ RewriteRule ^(.*[^/])$ $1/

Для редиректа 301 одной страницы на другую :

Redirect 301 /oldpage.html http://www.site.com/newpage.html

Чтобы убедиться, что при запросе любой версии главной страницы, к примеру: default.htm или index.html , будет произведен редирект на каноничную страницу http://www.site.com , нужно прописывать следующий код редиректа:

RewriteCond %{THE_REQUEST} ^{3,9}\ /([^/]+/)*(default|index|main)\.(html|php|htm)\ HTTP/ RewriteRule ^(([^/]+/)*)(default|main|index)\.(html|php|htm)$ http://www.site.com/$1

Редирект каталога

Если в адресе у вас отображается структура каталога, то при изменениях у вас будет менять и адрес. Поэтому нужно прописывать такой редирект:

RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2

Но бывает так, что адрес старого каталога отображается сразу после доменного имени, например www.site.com/old-catalog/ . В этом случае используется такой код:

RewriteRule old-catalog /(.*) / old-catalog /$1

Редирект при изменении расширения файлов

При смене CMS обычно меняется только расширении файлов. Для канонизации страниц в этом случае нужно использовать код вида:

RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

Редирект при появлении нескольких слэшей или тире

По разным причинам бывает, что в адресе появляются лишние слэши или тире, например www.site.com/catalog////page-1.html . Такие страницы нужно переадресовывать на адреса с одним слэшем .

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2

Таким же образом убираются и лишние тире в адресе, например изменение www.site.com/catalog/page-1.html на www.site.com/catalog/page-1.html .

RewriteCond %{REQUEST_URI} ^(.*)-(.*)$ RewriteRule . %1-%2

.htaccess - лишние слэши после имени домена

  • http://site.com//////catalog

Чтобы убрать все эти слэши так, чтобы было перенаправление на страницу без слэшей, т.е.

  • http://site.com/catalog

Нужно прописать:

RewriteCond %{REQUEST_URI} ^(.*)//(.*)$ RewriteRule . %1/%2

Генерация 301 редиректов

Если технических знаний для написания собственного кода не хватает, то есть специальные сервисы генерации всех основных редиректов:

Здесь вы можете, вставив свои данные, мгновенно получить нужный код. Поддерживаются редиректы для доменов, url адресов, каталогов.

Как проверить 301 редирект?

После внесения любых изменений в логическую часть редиректа, нужно проверять его работоспособность. Для мануальной проверки нужно:

  • Проверить работает ли вообще сайт – зайти на его главную страницу;
  • Побродить по сайту, его разделам и отдельным страницам.

Но есть и сервисы для автоматической проверки редиректа:

  • http://bertal.ru – очень подробные данные обо всех откликах сервера

Правила использования 301 редиректа vs Canonical

Поисковая система Google устанавливает четкие правила, только при соблюдении которых, она будет верно трактовать ваши действия. Вот как буквально понимают поисковики 301 и Canonical:

  • данная страница является устаревшей, новая страница находится по адресу такому-то. Прошу удалить старую страницу из индекса, а новую проиндексировать и полностью передать на нее весь вес старой.
  • Canonical – кроме этой версии страницы у меня есть еще и другие. Но ты, пожалуйста, индексируй только ту, на которой стоит Canonical. Другие версии будут лежать для того, чтобы их могли просматривать люди, но тебе включать их в индекс не нужно. Весь вес стоит передавать именно на страницу с Canonical.

Предпочтения по использованию редиректа 301

Обычно, это наиболее предпочтительный метод:

  • Для отдельных страниц – если навсегда изменился ее адрес;
  • Для доменов – если сайт будет находиться постоянно на новом домене;
  • Для страниц 404 и страниц с контентом, который более не актуален. К примеру, при удалении товара из каталога можно сделать редирект на похожий по функциям товар или на страницу каталога с этим типом товаров.

Когда лучше не использовать редирект 301

  • Если их реализация невозможна или она займет неоправданно много времени.
  • Если контент дублируется на двух страницах, но обе они должны быть доступны пользователю ввиду некоторых отличий (к примеру, размера одежды).
  • Если одна страницы имеет несколько URL (сортировка каталога по разным критериям).
  • Для кросс-доменов, когда контент на двух адресах может дублироваться, но он должен быть на каждом из доменов.

Понравился пост? Нажми на кнопочки →

Здравствуйте, уважаемые читатели блога сайт. Если говорить вкратце, то 301 редирект очень часто используют, когда необходимо исключить возникновение дублей, а также сохранить уже имеющийся трафик и все трастовые показатели страниц сайта, включая ссылочный вес от беклинков (обратных ссылок).

Одним из самых эффективных инструментов для установки 301 перенаправления служит дополнительный файл конфигурации.htaccess, присутствующий на серверах с программным обеспечением Apache. Подобные веб-серверы применяет , поскольку они наиболее оптимальны для решения разнообразных задач, если учитывать в комплексе такие критерии как эффективность, стоимость эксплуатации и функционал.

Сегодня попробуем разобраться со всеми подробностями, когда и при каких обстоятельствах использование 301 редиректа будет лучшим решением, а также какие директивы в каждом конкретном случае прописать в.htaccess, чтобы гарантированно выполнить задачу.

Что такое 301 редирект и когда его надо применять?

Чтобы СЕО продвижение вашего ресурса было максимально эффективным, нужно учитывать абсолютно все аспекты, которые могут повлиять на оптимизацию сайта. К их числу относится и рассматриваемый нами сегодня механизм. Что же такое редирект 301 (permanent redirect) и когда он применяется?

Технически это не что иное как HTTP ответа сервера, имеющий код 301, который информирует о том, что прежний изменен навсегда (moved permanently). На практике это выглядит так. При вводе старого адреса в поисковую строку браузер автоматически перенаправляет пользователя на новый урл, являющийся после настройки переадресации целевым объектом.

Ниже укажу несколько основных ситуаций, когда использование постоянного перенаправления не только полезно, но и крайне необходимо. Итак, редирект 301 применяется в тех случаях, когда:

  • старые урлы страниц изменены по одной из причин, которых может быть множество (о некоторых из них поговорим чуть ниже);
  • нужно исключить появление дублированных страниц (с полностью идентичным содержанием) одного и того же сайта, которые открываются по разным URL-адресам. Сюда же можно отнести и полные дубли ресурсов. Например, те, которые имеют домены с WWW и без этого префикса, а также , являющиеся зеркалами основного вебсайта;
  • осуществляется переезд на новый домен ( и );

Почему же так важно сделать постоянную переадресацию и что в конечном итоге она нам дает? Очень многое, и об этом я уже упомянул в самом начале публикации. Однако, напомню еще раз, поскольку это архиважно с точки зрения продвижения сайта.

После правильной настройки redirect 301 на страничку с новым URL со старого документа будет направлен весь накопленный им траст, включая ссылочный вес, передаваемый обратными ссылками, а также трафик посетителей, некоторая часть которого вполне может включать уже приобретенных вами клиентов или постоянных подписчиков.

Но обращаю ваше внимание на следующее. Редиректы (особенно, в массовом количестве) не всегда благо, потому не следует бездумно их использовать. Конечно, поисковики нормально учитывают permanent redirect (и передача всех характеристик со старого URL на новый тому порукой).

Однако, все же я рекомендую применять их лишь в тех случаях, когда без этих мероприятий вам действительно не обойтись. Тем более, что при неправильном использовании постоянного редиректа вы можете не исправить, а наоборот, усугубить положение. К тому же, в некоторых ситуациях для устранения дублей применяют (впрочем, он годится и в качестве дополнительной меры).

Постоянная переадресация при изменении URL страниц

В ходе развития проекта могут возникать ситуации, когда необходимо реорганизовать его структуру. Скажем, перенести некоторые статьи в другие разделы (если, конечно, они выводятся через рубрики, например), заменить постоянные ссылки на либо просто добавить в состав URL ключевые слова, которые были упущены ранее. Во всех этих случаях можно применить permanent redirect, но сначала оцените состояние своего ресурса.

Если сайт совсем молодой (2-3 месяца) и вы не успели еще толком провести внешнюю оптимизацию (получить достаточную ссылочную массу извне) тех страниц, URL которых желаете изменить, а также ежели трафик на них небольшой вкупе с полным отсутствием комментариев к статьям, то, возможно, лучше просто удалить такие вебстраницы.

После удаления они приобретут статус 404-й ошибки (их не должно быть много в силу молодости ресурса, что тоже важно) и постепенно будут исключены из индекса поисковиков. В этом случае потери окажутся минимальными (так как весовые характеристики удаленных страничек будут мизерными), зато вы сохраните структуру веб-ресурса в "чистом" виде, а это плюс.

А вот ежели ваш сайт уже набрал определенный траст у поисковиков, известность у пользователей и содержит несколько сотен страниц, то без редиректа 301 при изменении URL здесь не обойтись. Иначе, если вы решили все-таки удалить странички со старыми урлами, потери в виде посещаемости и веса уже будут серьезными.

Потребуется немало времени, пока вебстраницы с новыми адресами будут проиндексированы поисковиками, а также восстановится их прежний вес и связанный с ними трафик. Если же вы настроите постоянное перенаправление, то все пройдет практически без вредных последствий.

Необходимость применения 301 редиректа возрастает многократно , если вы планируете перейти на новую CMS () либо поменять все разделы ресурса, иначе говоря, изменить в массовом порядке все урлы единовременно.

Дубли страниц (зеркала) сайта со слешем и без на конце, а также с index.php

Итак, мы знаем, что дублированный контент сильно мешает продвижению сайта. Поэтому желательно твердо уяснить для себя, какие URL-адреса могут образовываться, по которым будут открываться страницы с абсолютно идентичным содержанием. Это даст вам возможность своевременно устранить проблему.

В условиях современного развития интернета в силу различных причин очень часто вебмастера имеют дело с зеркалами, когда все странички сайта доступны сразу по двум или более адресам.

Такие зеркала необходимо склеить, причем, вы должны сами указать поисковым системам главный домен , чтобы не допустить потери веса вебстраниц, а, следовательно, ухудшения их позиций в выдаче с последующим снижением трафика. Как раз здесь и будет уместным перманентный редирект. Ниже рассмотрим наиболее часто встречающиеся случаи дублей.

Являются, по-моему, наиболее ярким примером. Я писал об их склейке достаточно подробно, поэтому плотно изучить этот вопрос вы сможете, перейдя по предоставленной ссылке.

Возникновение подобных дублей с окончанием index.php и/или index.html, index.htm (в зависимости от настроек сервера), а также со слешем на конце и без него, связано со структурой урлов, по которым осуществляется переход на ту или иную папку на сервере. Если URL оканчивается слешем «/» , то это команда для серверного обработчика отобразить именно содержание директории (папки), которая включает находящиеся в ней файлы:

Http://site.ru/folder/

А вот ежели слеш отсутствует , то происходит обращение к файлу:

Http://site.ru/folder

В этом случае веб-сервер будет искать именно файлик с названием «folder». Поскольку на серверах в основном используются Unix-подобные операционные системы (чаще Linux), в которых расширение для файлов, идущее после его наименования и точки, не является обязательным (этим они отличаются от Windows), то это вполне логично.

После того, как обработчик не найдет такой файл, он догадается, что в URL просто упущен слеш, а потому нужно отобразить директорию, что он успешно и осуществит.

Но сервер настроен таким образом, что по соображениям безопасности он не может показывать служебные файлы, поэтому при обращении к папке начинает искать в составе данной директории объект с названием index , который в конечном итоге и предоставит.

Обычно доменное имя сайта олицетворяет название корневой папки , поэтому ниже следующий адрес в общем случае по сути дает команду отобразить ее содержимое:

Http://site.ru/

Все это теоретически связано с файлами, которые физически расположены на сервере. Однако, в большинстве случаев для управления сайтами устанавливаются системы управления контентом (CMS), которые предполагают создание страничек (главной, разделов, статей и т.д.) "на лету". В Вордпрессе, например, это достигается с помощью , выполняющих такую задачу.

Посему, если вы вобьете в поисковую строку браузера урл, представленный выше, то попадете на главную вебстраницу и никуда более. Однако, в соответствии с общими серверными настройками, она может открываться и по такому адресу (причем будет иметь тот же самый контент):

Http://site.ru/index.php

Кстати, это же справедливо и для других вебстраниц, например, категорий (рубрик):

Http://site.ru/category/index.php

А это уже дубли, которые нужно во что бы то ни стало ликвидировать посредством того самого перманентного редиректа в.htaccess. Решение этой задачи не только в отношении урлов с окончанием index.php, но и других вариантов, обязательно предоставлю в последней части статьи.

Чтобы получше понять все нюансы, отсылаю вас к , откуда вы, в частности, узнаете, что для страниц сайта варианты URL с завершающим слешем и без являются правильными с точки зрения синтаксиса и абсолютно равноправными в глазах ПС.

Причем, это касается всех вебстраниц, включая те же категории:

Http://site.ru/category http://site.ru/category/

или статьи (записи):

Http://site.ru/category/entry http://site.ru/category/entry/

Странички по этим адресам входят в состав разных зеркал одного сайта, а, значит, являются дублями, к которым поисковики относятся отрицательно. Поэтому вы должны выбрать лишь одно главное зеркало и "скормить" его поисковым системам, что гарантированно можно сделать при помощи постоянного (301-ого) редиректа.

Кстати, если вы пользуетесь Вордпрессом, то в прописываете нужную структуру URL для всех вебстраниц сайта. Можете настроить по своему желанию не только со слешем и без него, но и с любым другим окончанием.

Многие вебмастера, например, предпочитают адреса страничек с расширением.html на конце, которые имеют завершающий вид, привычный для пользователей, у подавляющего большинства которых установлена ОС Виндовс (где наличие расширения является обязательным).

Но это лишь красивый вид, не более того (я, кстати, не разделяю этих восторгов). Как было отмечено выше, все варианты урлов, включая адреса, оканчивающиеся слешем и без оного, совершенно равнозначны с практической точки зрения.

Желательно сыграть на опережение и не ждать, пока Яндекс или Гугл сами определят основное зеркало. Ведь вы не будете знать, какому именно поисковики выказали предпочтение. А такая ситуация может сильно замедлить раскрутку веб-ресурса.

Ведь ПС исключат из индекса страницы неосновного зеркала (совершенно нерентабельно забивать БД кучей бесполезного контента), на которые, возможно, были направлены ваши усилия по продвижению. Это чревато потерями позиций в выдаче, а, следовательно, трафика и траста. Жуть.

Однако, даже в самом худшем случае развития ситуации действия по настройке постоянной переадресации помогут решить проблему, по крайней мере, таким образом вы сможете не допустить дальнейшего регресса.

Проверка наличия постоянного редиректа для каждого из дублей сайта

Но для начала все-таки следует проверить, как обстоят дела с вашим вебсайтом. Возможно, все необходимые настройки тем или иным способом уже произведены, тогда не о чем беспокоиться. Самый незатейливый и быстрый способ осуществить проверку того, работает ли 301 redirect в нужных ситуациях, это поочередно ввести в адресную строку различные URL:

//goldbusinessnet..com/optimizatsiya-i-raskrutka-saita/index.php

И проследить, что произойдет дальше. У меня на блоге, например, первый вариант является основным, поэтому именно на него происходит перенаправление при вводе второго и третьего урла. Иначе говоря, данные зеркала уже склеены. Если же при вводе всех трех адресов открывается одна и та же страничка, но состав URL остается каждый раз неизменным (то есть, переадресации нет), то проблема имеет место быть.

Но есть и более продвинутые способы проверки склейки доменов и наличия редиректа. К таковым относится, например, возможность спросить у самих поисковых систем, ради которых вебмастера и проводят подобную оптимизацию. Например, чтобы проверить, присутствует ли переадресация от урлов с index.php на URL без этого окончания, для Яндекса необходимо ввести в поисковую строку вот такой запрос:

Url:сайт | url:сайт/index.php

После нажатия кнопки «Найти» вы получите ответ. Если присутствует один результат (как на скриншоте ниже), то все «ОК». Иначе говоря, редирект осуществлен:


Вам останется только выяснить, страницы какого именно зеркала являются основными для Яндекса. Для этого просто подводите курсор к отображаемому тайтлу или URL и смотрите, какой вариант появится в адресной строке внизу слева окна браузера.

Но самым надежным методом проверки является, на мой взгляд, получение ответа сервера. В этом случае вы получите код статуса HTTP, по которому сможете оценить корректность установленной переадресации или ее полное отсутствие. Воспользуемся для этого специальным сервисом Яндекса , введя тестируемый урл и нажав кнопку «Проверить»:


В итоге узнаем, что для URL с окончанием index.php основной робот Яндекса получил ответ «301 Moved Permanently», что и требовалось доказать. Таким же способом можно проверить перманентный редирект для любой группы страничек вашего сайта. Кстати, и поиск Google также можно задействовать (об этом в статье про домены с WWW и без также упомянуто).

Как сделать 301 редирект через htaccess

Итак, на основании предоставленной в этом мануале информации вы решили, что необходим перманентный редирект для решения той или иной задачи. С большой долей вероятности можно утверждать, что ваш сайт находится на сервере, управляемом ПО Apache (на всякий случай уточните у своего хостинг провайдера, так или это).

На серверах Апач существует отличное средство настройки конфигурации, а именно файл httpd.conf. Если в нем прописана соответствующая директива, то каждый вебмастер получает возможность использовать замечательный файлик .htaccess, который является дополнительным конфигурационным файлом и помогает оптимизировать работу сайта.

В принципе, этот инструмент обладает тем же функционалом, что и httpd.conf, просто директивы, указанные в нем, применяются лишь к тому каталогу, в котором он находится. Таким образом, если поместить.htaccess в корневую папку сайта, то можно установить самые разные настройки для конкретного веб-ресурса, включая постоянную переадресацию на нужные страницы.

Доступ к этому файлу можно легко получить по , задействовав соответствующий софт в виде того же Файлзилла. Ну а вносить изменения в него желательно не в простом редакторе, а в "золотом", то бишь в , где есть возможность осуществить откат на несколько шагов назад:


Если вдруг на сервере, где хостится ваш сайт, этого файлика не оказалось, его можно создать самому. Сделать это можно прямо на сервере через ту же программу NotePad++, которая также поддерживает возможность подсоединения по FTP-протоколу.

Прежде, чем продолжить, хочу напомнить, что перед любым редактированием.htaccess следует для надежности сделать его резервную копию . Это необходимо для того, чтобы в случае неудачных действий и потери доступа к сайту, вы смогли бы все вернуть как было.

По-моему, я об этом уже говорил, но не грех напомнить, что постоянный редирект представляет из себя HTTP код ответа сервера 301, который означает вечную переадресацию с одного урла на другой c сохранением практически всех весовых характеристик страниц.

К слову, о всех распространенных кодах ответа сервера будет отдельная публикация в ближайшем будущем, поэтому подписывайтесь на рассылку блога , чтобы не только не пропустить эту статью, но и вообще быть в курсе всех новостей сайт.

Теперь посмотрим, как настроить 301 редирект через.htaccess для каждого конкретного случая. Для этого нам понадобится воспользоваться услугами модуля mod_rewrite , который и предназначен для преобразования URL на серверах Apache.

По умолчанию обычно от отключен. Чтобы включить этот модуль, требуется прописать в файл.htaccess «RewriteEngine on» :

RewriteEngine on

А чтобы полностью корректно инициировать действие этого расширения в отношении вашего сайта, нужно прописать следующие строки:

Options +FollowSymLinks RewriteEngine on RewriteBase /

Первая строчка позволяет обрабатывать файлы, находящиеся физически за пределами объектной директории, но на которые существуют ярлыки, в общем по аналогии с ярлыками в Виндоус.

Вторая, как я уже сказал, включает сам модуль mod_rewrite. Ну а третья (RewriteBase / ) позволяет обрезать полный путь от корня сервера до корневой директории сайта с тем, чтобы последующие директивы были применены именно к URL-адресам сайта. Если этого не сделать, могут возникнуть проблемы.

Простой знак слеша «/» здесь обозначает относительный путь для главной страницы (или до корневой папки) и используется при формировании . Если вы пожелаете прописать сразу несколько директив по 301-му редиректу, выше означенные строчки повторять перед каждым правилом не нужно.

Теперь приступаем к практике и начнем с самого легкого. Если по какой-то причине вам необходимо выборочно изменить урлы отдельных страниц, то указываем простое перенаправление на новый адрес :

Redirect 301 /page-name1/ http://site.ru/page-name2/

В этом случае для представления старого урла страницы применяется относительный путь (/page1-name1/), а нового — абсолютный (начинается с «http://»), поскольку постраничный редирект можно осуществлять и на другой сайт. Здесь следует обратить внимание на то, что между двумя адресами оставляется пробел.

Если страницы выводятся через категории, то при переносе какой-либо из них в другую рубрику, естественно, изменится адрес. В ниже следующем примере дана общая ситуация, когда меняется не только часть URL, связанная с рубрикой, но и окончание, которое соответствует названию самой странички:

Redirect 301 /category1/page-name1/ http://sait.ru/category2/page-name2/

Ежели надо сделать постоянное перенаправление для всех страниц ресурса сразу, например, при смене окончания адреса с расширением.php на завершение с.html, то уже используется директива RedirectMatch , позволяющая использовать регулярные выражения:

RedirectMatch 301 (.*)\.php$ http://site.ru$1.html

Теперь перейдем к более сложным вариантам 301 редиректа с одной страницы на другую, которые помогут исключить многочисленные дубли. Рассмотрим наиболее часто используемые перенаправления, связанные с описанными в этой статье выше случаями.

Как настроить permanent redirect для доменов с WWW и без, я . Но все-таки повторю эту информацию для полноты картины. Итак, для того, чтобы сделать постоянную переадресацию с URL, содержащего в адресе WWW, на урл без этого префикса , нужно добавить следующее правило в файл.htaccess:

RewriteCond %{HTTP_HOST} ^www\.(.*) RewriteRule ^(.*)$ http://%1/$1

И наоборот, при желании оставить в урлах страниц рудиментарный отросток в виде трех W, надо оформить перенаправление с адресов без WWW на URL с WWW посредством директивы:

RewriteCond %{HTTP_HOST} ^(.*)$ RewriteCond %{HTTP_HOST} !^www\. RewriteRule ^(.*)$ http://www.%1/$1

RewriteCond определяет условие, при котором будет выполняться правило RewriteRule (то есть сам редирект). Кстати, детальный разбор применения основных директив mod_rewrite , при желании можете ознакомиться.

Представленные чуть выше варианты переадресаций с WWW на без и наоборот являются универсальными, и они, в принципе, должны работать. Однако, более надежными все-таки будут директивы с привязкой к конкретному домену. Правило перманентного редиректа с WWW на без этого префикса тогда будет выглядеть так:

RewriteCond %{HTTP_HOST} ^www\.site\.ru$ RewriteRule ^(.*)$ http://site.ru/$1

А обратный redirect (с без WWW на с WWW) вот так:

RewriteCond %{HTTP_HOST} ^site\.ru$ RewriteRule ^(.*)$ http://www.site.ru/$1

Чем же конкретно второй метод лучше первого? Дело в том, что в нем проверяется не только отсутствие или наличие трех W в адресе, но и сам домен подвергается проверке на полное соответствие. Только не забудьте вместо «site» и «.ru» вставить свое имя домена и доменную зону.

Попробуем склеить зеркала, плодящие дубли страниц с index.php (расширения могут быть другими, скажем, .htm или.html). Итак, 301 редирект с урлов, содержащих index.php, на адреса страниц ресурса без этого окончания :

RewriteCond %{THE_REQUEST} ^.*/index.php RewriteRule ^(.*)index.php$ http://%{HTTP_HOST}/$1

Постоянное перенаправление с адресов без слеша в конце на урлы со слешем также можно реализовать:

RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} !\/$ RewriteRule ^(.*[^\/])$ /$1/

А вот как выглядит обратная переадресация, то есть, с URL-ов со слешем на адреса без слеша :

RewriteCond %{REQUEST_URI} !\? RewriteCond %{REQUEST_URI} !\& RewriteCond %{REQUEST_URI} !\= RewriteCond %{REQUEST_URI} !\. RewriteCond %{REQUEST_URI} ![^\/]$ RewriteRule ^(.*)\/$ /$1

Естественно, разнообразие тех ситуаций, когда применяется permanent redirect, не исчерпывается приведенными выше примерами, их значительно больше, и в каждом конкретном случае необходимо составить корректные директивы, чтобы исправить положение, а не усугубить его.

Поскольку озвученная в публикации тема достаточно сложна, особенно для неискушенных, в качестве самодостаточного материала посмотрите видеоролик о порядке составления различных директив для применения 301 редиректа:

Для принятия правильного решения в том или ином случае настоятельно советую ознакомиться с мануалом по данной теме известного в рунете оптимизатора Александра Алаева, где вы можете почерпнуть крайне полезные сведения. Также не лишними будут официальные материалы от Гугла и Яндекса ( и ), из которых вы также получите недостающую информацию.

И вот еще что. Возможно, предоставленные в статье правила для постоянной переадресации в каком-то конкретном случае будут работать некорректно либо не подействуют вовсе. Тогда не пропустите возможность обратиться к своему хостинг провайдеру с просьбой разрешить проблему. У каждого уважающего себя хостера найдутся грамотные специалисты, которые окажут посильную помощь. В конце концов, это их обязанность.

Совет напоследок . Прежде, чем без оглядки кидаться создавать редиректы, обязательно проверьте их наличие, о чем я вещал в одном из разделов данной статьи. Вполне вероятно, что никаких действий вам предпринимать не понадобиться. Ведь разработчики большинства популярных движков для сайта отслеживают ситуацию. Поэтому, вполне вероятно, что многие из проблем дублей уже изначально решены.

В завершение предлагаю еще один видеоролик, который по качеству не только не уступает первому, но и в каком-то смысле дополняет его:

Если вы хотите изменить URL-адрес страницы, отображаемый в результатах поиска, рекомендуется использовать переадресацию 301 (301 Permanent Redirect), выполняемую сервером. Это самый лучший способ обеспечить переход пользователей и поисковых систем на нужную страницу.

Код статуса 301 означает, что запрашиваемая страница окончательно перемещена в новое местоположение.

На самом деле существует несколько редиректов. О том как сделать 301 редирект можно посмотреть на инфографике.

В каких случаях использовать редирект 301?

Использовать переадресацию 301 особенно удобно в следующих случаях:

  1. При смене домена. Вы переместили свой сайт в другой домен и хотите, чтобы казалось, будто перехода и вовсе не было.
  2. Для передачи новому домену Page Rank и тИЦ.
  3. Для сохранения поискового трафика.
  4. Пользователи могут получить доступ к сайту, используя несколько различных URL-адресов. Например, попасть на страницу можно несколькими способами: //site.ru/sub , //sub.site.ru или //www.site.ru . Бывает удобно выбрать один из этих URL-адресов в качестве канонического (основного) и использовать переадресацию 301 для перенаправления на него трафика с других URL. Для настройки можно использовать «Инструменты для веб-мастеров».
  5. При объединении двух сайтов требуется, чтобы все ссылки на устаревшие страницы указывали на страницы, действующие в данный момент.
  6. При переносе страницы сайта в новое место.
  7. Для склейки имени сайта с префиксом www и без него.

Статья по теме: Яндекс заменяет тИЦ на ИКС - новый показатель качества сайта

301-ая ошибка (301 Permament Redirect), возвращаемая при обращении к определенному адресу страницы, означает, что сайт был на постоянной основе перенесен на новый адрес, также указанный в HTTP заголовке. Как пользователи, зашедшие через браузер, так и поисковые боты будут перенаправляться по новому адресу, при этом, для поисковиков все свойства старого адреса (страницы) будут переданы новому URL . При 301 редиректе произойдет склейка старого и нового адресов: параметры вроде PageRank и тИЦ, а также вес страницы и ссылочный вес старого адреса будет передан новому URL .

Редирект с номером ошибки 301 (moved permanently) это наилучший способ сохранить рейтинг сайта в поисковых системах при переносе его на новый домен или смене системы управления контентом. Переадресацию можно выполнить несколькими способами, в зависимости от установленного программного обеспечения.

301 редирект в.htaccess

При использовании сервера Apache, переадресацию можно просто выполнить с помощью файла.htaccess , однако, при этом, не забыть включить модули mod_alias (для поддержки директив Redirect , RedirectPermanent и RedirectMatch) и/или mod_rewrite (для использования реврайта) в php.ini .

Для этого поместите в корне папке вашего сайта файл.htaccess.

Редирект с помощью директивы Redirect или RedirectPermanent модуля mod_alias

Redirect 301 /old-page.html //new-domain.ru/new-page.html

Redirect permanent /old-page.html //new-domain.ru/new-page.html

Недостатком данного способа является то, что все адреса, которые необходимо перенаправить, нужно перечислять один за одним, каждый отдельно. Также можно использовать RedirectPermanent для аналогичных целей.

RedirectPermanent /old-url.html //new-site.ru/new-url.html

Редирект с помощью директивы RedirectMatch

Этот редирект подобен предыдущему, за исключением того, что можно задавать регулярное выражение для старых URL адресов. Допустим, при смене движка с PHP на ASP, можно старые адреса перенаправить следующим образом:

RedirectMatch /(.*).php$ /$1.aspx

Редирект с помощью директивы RewriteRule модуля mod_rewrite

Для использования директивы RewriteRule необходимо удостовериться, что в httpd.conf подключен модуль mod_rewrite , а также влючена опция FollowSymLinks . Использование реврайт модуля дает много возможностей для перенаправления страниц на новые адреса.

Статья

Статьи по теме: