• Разместил Николай Коротков
  • Дата: 29 ноября 2013 в 09:23

И снова здравствуйте!

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

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

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

Как настроить 301 редирект? Редирект.htaccess

Мы с вами будем рассматривать 301 редирект через.htaccess. Htaccess является служебным файлом конфигурации, который скрывает в себе массу возможностей. С помощью него можно запретить доступ к отдельным каталогам, указать кодировку страниц, установить защиту файлов и папок, сделать 301 редирект и т.д.

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

Если вдруг в корневом каталоге вашего сайта не окажется данного файла, создайте его самостоятельно. Самый простой способ создания файла.htaccess, воспользоваться FTP — клиентом FileZilla (о нем я писал ):

Для этого перейдите в корневой каталог своего блога, нажмите в пустом поле правую кнопку мыши/Создать новый файл/Введите имя файла/.htaccess/ОК. После этого файл будет доступен для редактирования. Открыть его можно любым текстовым редактором, например .

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

Для этого перейдите во вкладку «Сервер» и установите галочку напротив пункта «Принудительно отображать скрытые файлы». Если и в этом случае вы не найдете файл.htaccess, то тогда создайте его.

В каких случаях может понадобиться 301 редирект?

Начнем с самого главного!

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

Дело в том, что у любого ресурса в сети, один из вариантов доменного имени (с www или без www) должен быть главным. Вот простой пример относительно моего блога. Главным его доменом является http://сайт , а www.сайт — является его зеркалом. Главное зеркало блога, прописывается в файле robots.txt для Яндекса в виде директивы Host.

Если у вас нет файла robots.txt, обязательно изучите вот , там я все подробно расписал. Robots.txt в обязательном порядке должен присутствовать на каждом ресурсе. Иначе блог обречен на неудачу! Помимо robots.txt, вам необходимо указать главное зеркало сайта в Яндекс.Вебмастер.

Но так как в robots.txt оно уже указано, то я вам рекомендую оставить все на усмотрение робота. Для этого перейдите во вкладку «Настройки индексирования/Главное зеркало» и поставьте кругляшек напротив пункта «На усмотрение робота»:

Для того, чтобы воспользоваться данной функцией, вы должны быть зарегистрированы в Яндекс.Вебмастер. О том, как это сделать я писал . До недавнего времени в панели инструментов для веб-мастеров Google, была похожая функция, где указывался основной домен, но после внесения последних изменений разработчиками, она исчезла.

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

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

Что касается приставки www, то она давным-давно должна была отмереть. Но так как в сети до сих пор существует множество ресурсов с префиксом www, то она имеет место быть. Для поисковых систем http://сайт и www.сайт это два абсолютно разных адреса! Да и пользователи частенько в строку браузера вбивают адрес ресурса именно с www, поэтому отмирать ей пока рановато. Исходя из этого, настройки зеркала, просто необходимы!

Последствия от неверной настройки зеркала

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

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

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

Естественно, вы об этом даже и не догадываетесь и продолжаете развивать свой ресурс. Со временем он обрастет уникальным контентом, естественными ссылками и комментариями. Дела идут в гору, ну как тут не радоваться? Но вот беда! Поисковые системы, наблюдая за сайтом без приставки www, поставили на нем клеймо, за не уникальность! В итоге он перестанет индексироваться, а со временем полностью выпадет из индекса!

Вот это будет страшно и очень обидно! И чтобы избежать таких печальных ситуаций и был придуман 301 редирект.

Перенаправление с домена с www на без www и наоборот

Как настроить 301 редирект в этом случае? Все очень просто. Открываем файл.htaccess и копируем в него представленный ниже код.

Перенаправление с www на без www:

RewriteEngine on RewriteCond %{HTTP_HOST} ^www.vashdomen.ru RewriteRule ^(.*)$ http://vashdomen.ru/$1

и наоборот:

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

Обратите внимание, что вместо vashdomen, в обоих случаях нужно указать доменное имя своего блога!

Сохраните файл.htaccess и переместите его обратно в корневой каталог с заменой старого файла. Теперь, как бы пользователь не вбивал адрес вашего блога в строку браузера (хоть сайт , хоть www.сайт , хоть http://www.сайт ), его в любом случае перенаправит на главную страницу.

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

Аналогичной схемой редиректа 301, приведенной выше, можно воспользоваться при переезде с одного домена на другой. Но все же для наглядности приведу пример. Вы переезжаете с домена sait-1.ru на домен sait-2.com . В этом случае прописываем в файле.htaccess следующее:

RewriteEngine On RewriteCond %{HTTP_HOST} sait-1.ru RewriteRule (.*) http://sait-2.com/$1
Редирект при изменении ЧПУ ссылок

Иногда случается необходимость изменить ЧПУ ссылки (о них читайте ). Возможно, вы решили поменять целый раздел (категорию) на своем блоге. Или же банально ничего не знали о ЧПУ, а блог уже ведется и наполняется контентом. В этом случае, как нельзя кстати поможет 301 редирект. Причем, при таком раскладе, все показатели страницы (ранее проставленные ссылки, вес, PR) останутся на прежнем уровне, т.е. не потеряют свою значимость, авторитетность и позиции!

Приведу простой пример. Вы решили изменить название страницы. Старое имя страницы имело вид obo-mne.html , новое имя ob-avtore.html . В этом случае вам нужно будет прописать в файле.htaccess следующую конструкцию:

Редирект для партнерских программ

Допустим, вы решили перенаправить пользователя на страницу с партнерской программой. Код партнерки выглядит следующим образом: http://www.partnerka.ru/?ref=35677. Увидев такую ссылку, большинство пользователей не будут по ней переходить, заранее зная о ваших намерениях.

Для того, чтобы ссылка приняла привлекательный вид, вам необходимо создать отдельную страницу, например dlya-partnerov.html, с которой и будет идти перенаправление пользователя на страницу с партнерской программой. Теперь останется разместить ссылку на страницу vashdomen.ru/dlya-partnerov.html, а в файле.htaccess прописать следующее:

redirect 301 dlya-partnerov.html http://www.partnerka.ru/?ref=35677

Но лично я для таких целей предпочитаю пользоваться несложным скриптом, о котором рассказывал (способ №3).

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

Как вам статья? А вы используете 301 редирект? Возможно, вам известны более легкие способы перенаправления? Жду ваши комментарии!

Понравилась статья? Поделись с друзьями!

Каждому комментатору книга в подарок!

Книга включает в себя подробное описание самых эффективных методов продвижения вашего ресурса!


60 комментариев

  • 29 ноября 2013 15:20

    Прочитал и нифига не понял...Для таких как я остается только одно, найти человека, сказать, чтобы настроил редирект 301 и довериться, что он все сделал =))))

    Значит все-таки толково не получилось объяснить...

    Нет, нет, всё очень толково и понятно написано — спасибо!

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

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

    Тёзка, не о Вас речь!

    Вы специалист СВОЕГО дела, которым настоятельно рекомендуется рутинно-техническую работу делегировать.

    Так что — творите, и не заморачивайтесь на то, что Вас отвлекает от основного дела.

    Речь о том, что есть много людей, которые делают сайты «что бы было», или «потом доделаю». Вот и я не реализовал полностью даже то, что уже знаю: мешает основная работа, прочие дела... Да причин всегда найдётся масса, что бы не делать. А ведь это самая большая ошибка, когда человек не сделал одного, а уже ищет другое. Накопленные и не применённые знания бесполезны, увы.

  • 30 ноября 2013 11:12
  • 30 ноября 2013 16:02
  • Анна 30 ноября 2013 19:59

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

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

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

    Это получается, кто с www не пишет, все равно попадает на сайт?

    Я просто думал, что это функционал самой CMS, и не думал об этом никогда...

    Александр

    Верно! Для этих целей и настраивается 301 редирект. В самой CMS этого не заложено.

    А как я узнаю, если это перенаправление перестанет работать? Сейчас все отлично!

  • Елена 1 февраля 2014 22:55

    Что-то писала комент, а не отправился — жаль. тот длиннее был.

    В общем я читала, читала и ничего до меня не дошло.

    Подскажите, как сделать редирект каждой страницы?

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

    Покажите пример на своем сайте одной страницы на другой — как тут правильно ставить, а то я делала (инфу нашла в инете) и ничего не вышло.

    Redirect 301 /старая страница.html site.com/новая страница.html

    Redirect permanent /старая страница.html site.com/новая страница.com/

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

    И по вашей просьбе показываю простой пример на своем блоге. Допустим, я хочу перенаправлять посетителей со страницы «Все статьи блога» на страницу «Мои курсы». В этом случае, я прописываю конструкцию следующим образом:

    redirect 301 vse-stati-bloga.html сайт/moi-kursy

  • Павел 25 марта 2014 23:37

    А у меня в файле.htacces прописан только вот такой код

    # BEGIN WordPress

    RewriteEngine On

    RewriteRule . /index.php [L]

    что мне изменить? Файл составлен не правильно?

  • 29 апреля 2014 10:39

    Николай, добрый день!

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

    Насколько я понимаю, мне подойдет редирект для ЧПУ, после настройки которого можно будет либо перенести старый контент, либо написать аналогичный новый и рукописную страницу можно будет с сервера снести или как?

    Подскажите, пожалуйста, тестирование редиректа — это просто переход по старому адресу, и увидеть, что все корректно открывается на новой странице? Значит ли это, что поисковики увидят это в таком же свете?

    Заранее большое спасибо!

    Здравствуйте, Ирина!

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

    Николай, благодарю за скорый ответ!

    Только домен остается старый, просто перехожу с рукописного варианта на wp и все.

    Проверила код ответа сервера — там меня ждал сюрприз

    Вместо 200ОК — 301 редирект. Открыла htaccess. и чтоб Вы думали? Там стандартный, судя по всему набор:

    # BEGIN WordPress

    RewriteEngine On

    RewriteRule ^index\.php$ — [L]

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . /index.php [L]

    Подскажите, мне, не обращая внимания на ответ сервера настроить редирект через 301 ?

    Заранее спасибо!

    Код статуса 301 означает, что запрашиваемая страница окончательно перемещена в новое местоположение. Стандартное правило в файле.htaccess как раз таки и отвечает за редирект. Так, что ответ сервера в этом случае показан верно, в дальнейшем редирект можно будет убрать и удалить старые страницы с сервера.

    Да, я поняла, только не совсем ясно, откуда взялся этот редирект, ведь я его не ставила и как он реализовался, если htaccess. его нет... Видимо, как -то автоматически проставился системой, после того, как я создала индексную страницу в wp, а старую рукописную удалила. Сейчас пропишу редирект на остальные страницы в htacess вручную.

    Спасибо Вам за статью.

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

    Простите, ещё забыла уточнить, куда строчку

    redirect 301 obo-mne.html vashdomen/ob-avtore

    пристроить в уже готовой конструкции

    # BEGIN WordPress

    RewriteEngine On

    RewriteRule ^index\.php$ — [L]

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . /index.php [L]

  • Ирина 29 апреля 2014 20:26
  • Ирина 19 мая 2014 22:34

    Николай добрый вечер!

    Снова нужна Ваша помощь!

    В последний ап яндекс выбрал главным зеркалом сайт.ру с www (а так как было без www, обнулился тиц!)

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

    redirect 301 /файл.html сайт.ru/новое название рубрики/

    # BEGIN WordPress

    RewriteEngine On

    RewriteRule ^index\.php$ - [L]

    RewriteCond %{REQUEST_FILENAME} !-f

    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule . /index.php [L]

    Пробовала пристроить перенаправление и перед строчкой # END WordPress и в самом верху файла

    — выдает ошибку перенаправления,пишет, что оно никогда не закончится…


  • Если вы хотите правильно настраивать 301 редирект на своем сайте, то SeoProfy подготовили пошаговое руководство, в котором рассказываются и показываются все детали и нюансы.

    Руководство по 301-му редиректу состоит из двух частей:
    - Статья с примерами кода и само руководство (если вам сразу нужен пример кода, то лучше сразу пролистать инфографику)
    - Наглядная детальная инфографика

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

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

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

    301 Moved Permanently

    301 редирект является постоянным редиректом, который передает около 90-99% ссылочного веса. Данный редирект указывает, что страница перемещена по новому адресу и старый url следует считать устаревшим.

    302 Found (HTTP 1.1) / Moved Temporarily (HTTP 1.0)

    302 редирект – временный редирект. Данный редирект передает 0% от ссылочного веса и, в большинстве случаев, не должен использоваться. На данный момент интернет работает по протоколу HTTP, который и определяет, как обрабатывать URL-адреса. В двух версиях этого протокола этот ответ сервера имеет разный статус ответа:

    HTTP 1.0: 302 ответ сервера это «Moved Temporarily » – текущий документ временно перемещен на другой URL.

    HTTP 1.1: произошло изменение ответа сервера на «Found» – текущий документ найден.

    307 Moved Temporarily (HTTP 1.1 Only)

    307 редирект в протоколе HTTP 1.1 стал приемником 302 редиректа. В то время, как основные поисковые боты, начнут рассматривать его как аналог 302, для почти всех случаев лучше всего использовать 301. Исключением из этого правила является, когда контент действительно переехал только временно (например, во время технического обслуживания) и поисковые системы уже понимают, что ваш сервер совместим с HTTP 1.1. Но, так как это практически невозможно определить, действительно ли поисковые системы поняли, что ваш сервер совместим с этим новым протоколом, то лучше использовать 302 редирект для контента, который был временно перемещен.

    Другие виды редиректов

    Существуют также и другие виды редиректов: Meta Refresh или с помощью javascript – которые выполняются на уровне страницы, а не на уровне сервера. Вот как выглядит типичный редирект Meta Refresh:

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

    Примеры использования

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

    Чтобы склеить домен с www на без www:
    RewriteCond %{HTTP_HOST} ^www.site\.com$
    RewriteRule ^(.*)$ http://site.com/$1

    Для склейки с без www на с www:
    RewriteCond %{HTTP_HOST} ^site\.com$

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

    Как из этих вариантов больше находиться в топе
    - для какого из вариантов больше страниц в индексе

    Канонизация слеша в конце урла

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

    Http://www.site.com/cat1/

    Http://www.site.com/cat1

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

    Для того чтобы удалить слэш в конце:
    RewriteCond %{HTTP_HOST} (.*)
    RewriteCond %{REQUEST_URI} /$
    RewriteRule ^(.*)(/)$ $1

    Для того чтобы добавить слэш в конец адресной строки:
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_URI} !(.*)/$
    RewriteRule ^(.*[^/])$ $1/

    Редирект одной страницы на другую страницу:
    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

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

    Если структура каталога у вас отображается в url-ле, то если вы делаете перекаталогизацию у вас соответственно будут изменяться и url. В таком случае необходимо прописать следующий редирект:
    RewriteRule ^(.*)/old-catalog/(.*)$ $1/new-catalog/$2

    Но, если урл старого каталога начинается сразу после домена: www.site.com/old-catalog/, то необходимо воспользоваться следующим кодом
    RewriteRule old-catalog /(.*) / old-catalog /$1

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

    Если вы вдруг переехали на другую платформу или CMS и при этом у url-ов изменились только расширение, то в этой случае вам поможет вот такой редирект:
    RedirectMatch 301 (.*)\.php$ http://www.site.com$1.html

    Примеры использования для защиты сайта от множественных дублей страниц

    Редирект с разных доменов и субдоменов

    Если вы купили несколько доменов в разных доменных зонах или разрабатывали новый сайт и повесили его на субдомен, а этот субдомен забыли закрыть от индексации, то необходимо сделать редирект на основной домен:
    RewriteRule ^(.*)$ http://www.site.com/$1

    Таким, образом все домены типа www.site.ru, www.site.net, test.site.com будут переадресовываться на сайт www.site.com.

    Как удалить несколько слешей/тире в урле

    Иногда «по случайности» в урле могут появится по несколько слешей, например, www.site.com/catalog////page-1.html. В таких необходимо делать 301 редирект на страницу с одним слешер 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

    Как сделать редирект с любого урла на url только в нижнем регистре

    Поскольку, поисковыми системами регистр букв учитывается, то при проектировании сайта желательно, чтобы все урлы были в нижнем регистре. Однако, если вы изначально упустили данный момент, то лучше всего воспользоваться следующим кодом для редиректа на уровне php-скрипта:
    $lowerURI=strtolower($_SERVER["REQUEST_URI"]);
    if($_SERVER["REQUEST_URI"]!=$lowerURI)
    {
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://" . $_SERVER["HTTP_HOST"] . $lowerURI);
    exit();
    }

    Как переехать на новый домен? Оптимальная стратегия 301 редиректа

    Оптимальной стратегией переезда на новый домен учитывая пожелания 2-ух основных поисковых систем рунета Yandex и Google это:

    Постраничный 301 редирект со старого сайта на новый.
    - при этом для файла robots.txt редирект не делаем, а прописываем в нем директиву Host на новый домен.

    Тогда код для настройки редиректа на старом сайте может иметь следующий вид:
    RewriteCond %{REQUEST_FILENAME} robots.txt$
    RewriteRule ^([^/]+) $1 [L]
    RewriteCond %{HTTP_HOST} !^www\.site\.com
    RewriteRule ^(.*)$ http://www.site.com/$1
    а файл robots.txt для старого сайта:
    User-agent: Yandex
    Disallow:
    Host: newsite.com

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

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

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

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

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

    Вообще ли работает сайт: зайти на главную страницу)

    Походить по основным разделам и страницам сайта

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

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

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

    301 - Эй, Поисковики: моя страница уже не здесь и она навсегда переехала на новую страницу. Пожалуйста, удалите старую страницу из индекса и передайте её вес на новую страницу.

    Canonical - Эй, Поисковики (так для большинства поисковых систем): у меня есть несколько версий этой страницы (или содержания), пожалуйста, индексируйте только ту версию страницы, на которую стоит canonical. Я буду держать другие страницы доступными для людей, чтобы они могли их видеть, но, Поисковик, не включай их в свой индекс и пожалуйста, передайте вес на мою предпочтительную страницу.

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

    По умолчанию - это предпочтительный метод

    Для страниц: если страница навсегда переехала или была заменена на новый адрес

    Для доменов: если сайт переехал на новый домен (продажа сайта, ребрендинг и т.д.)

    Для 404 страниц и контентом, который потерял свою актуальность (при условии соответствующего содержания). Например, если удален товар из определенного каталога, то можно сделать редирект на похожий товар, или на url-категории к которой пренадлежал данный товар.

    Когда лучше использовать rel= «canonical»?

    Когда 301 редиректы не могут быть реализованы, или их внедрение займет слишком много времени

    Страницы с несколькими разными url по сути одной страницы (например, сортировки каталога, отслеживания партнерских ссылок, …)

    Кросс-доменов, когда оба сайта похожи, но похожий контент нужно оставить на каждом из доменов.

    Итого

    Ошибки при использовании редиректов

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

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

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

    Редирект на не релевантные страницы/контент. Редирект всегда желательно проставлять на максимально релевантную страницу: или на похожую страницу, или на ветку каталога/раздела к которому принадлежала данная страница.

    Не правильный выбор использования rel=canonical vs 301 редирект. Смотри выше.

    Редирект, конечной точкой которого является не 200-я страница. Редирект должен вести на правильно работающую страницу с 200 ответом сервера. Иначе, желательно не сбивать поисковых роботов и отдавать 404 ответ.

    Редирект robots.txt. Так как, например, нужно прописывать директиву Host для Яндекса при склейке доменов.

    Переходим к просмотру инфографики:

    Скачать инфографику.

    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.

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

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

    Редирект с помощью директивы 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.(.*)
    RewriteRule ^(.*)$ http://%1/$1

    или альтернативный, более понятный синтаксис

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.domain.com$
    RewriteRule ^(.*)$ http://domain.com/$1

    Редирект запросов с не-www на домен с www префиксом

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^domain.com$
    RewriteRule ^(.*)$ http://www.domain.com/$1

    или же альтернативный вариант

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

    Редирект с помощью скрипта (отправки заголовков)

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

    PHP редирект

    ASP редирект


    ASP .NET редирект


    private void Page_Load(object sender, System.EventArgs e)
    {
    Response.Status = “301 Moved Permanently”;
    Response.AddHeader(“Location”,“http://www.new-url.com”);
    }

    ColdFusion редирект


    JSP (Java) редирект

    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

    Далеко не все начинающие веб-мастера знают что такое «редирект 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 редирект — это перенаправление посетителей и поисковых роботов с одного URL-адреса на другой.

    301 редирект обычно прописывается в следующих случаях:

  • при склеивании зеркал сайта с www и без www;
  • при переезде сайта на новый домен;
  • при переносе сайта на новую CMS;
  • при изменении URL-адресов страниц;
  • при устранении дублей страниц сайта.
  • Как ни странно, последний случай рассматривают крайне редко, хотя при устранении дублей 301 редирект помогает как никто другой, если, конечно, у вас нет желания ковырять код самой CMS. А если вы занимаетесь поисковой оптимизацией сайтов, то вопрос наличия или отсутствия дублей у страниц сайта обязательно должен вас волновать.

    301 редирект замечателен тем, что он передает pr-страниц и сайта, а соответственно и ссылочный вес новому URL. Но зато он не передает наложенные на старый домен санкции со стороны поисковых систем, что вдвойне приятно.

    Итак, с тем, что такое 301 редирект, разобрались. Перейдем непосредственно к тому, как его сделать.

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

    Для начала я приведу список операторов регулярных выражений , которые пригодятся вам при настраивании 301 редиректов.

    • ^ — ограничение слева;
    • $ — ограничение справа;
    • * — 0 и более символов;
    • + — 1 и более символов;
    • . — любой символ;
    • \ — экранирование;
    • () — переменная;
    • — диапазон значений.

    Существуют различные способы того, как сделать 301 редирект. Лично я, как и многие другие вебмастера, настраиваю его через файл.htaccess. Данный файл есть практически у каждой популярной CMS, и находится он в корне вашего сайта. Скачать.htaccess можно через при помощи клиента FileZila:

    Файл.htaccess следует открыть текстовым редактором, к примеру, Notepad++. Поверх всех кодов редиректов вам следует прописать следующую строку:

    RewriteEngine On

    В противном случае редиректы работать не будут.

    Многие ошибочно полагают, что можно обойтись и без 301 редиректа. Я могу вам сказать, что он необходим при оптимизации практически каждого сайта. К примеру, абсолютно каждый сайт изначально доступен по двум адресам — с www и без www. Беда в том, что это приводит к размыванию ссылочной массы. Объясню почему. Другим сайтам абсолютно все равно, какой из двух вариантов написания вашего домена является основным. Если они будут ставить на вас ссылки, то в адресе могут прописывать как вариант с www, так и без www. Ссылочная масса в итоге будет размыта, а поисковики в любом случае будут индексировать только один вариант. Когда-то так они вообще воспринимали их как совершенно разные сайты.

    Чтобы ваш сайт активно рос в позициях и не терял ссылочную массу, требуется в файле.htaccess прописать 301 редирект.

    С www на без www:

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

    С без www на www:

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

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

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

    Помните, что вместо site.ru нужно прописывать домен вашего сайта. После проделанных действий сохраните файл.htaccess и закачайте его на сервер, заменив им старый файл.

    301 редирект очень часто выручает меня, когда я борюсь с дублями страниц сайта. А это я делаю практически каждый раз, когда выполняю внутреннюю оптимизацию очередного сайта. Лично я еще не встречал CMS, которая бы не генерировала дубли. Хотя если речь идет о небольшом сайте, то бывают исключения. Понятия не имеете, о чем я сейчас говорю? Тогда подписывайтесь на , вскоре я напишу о дублях целую статью.

    Бывает такое, что страница сайта доступна сразу по двум URL-адресам вида: http://site.ru/category/page.html и http://site.ru/page.html. В данном случае идет речь о дублях. К примеру, мы хотим, чтобы страница была доступна только по адресу второго вида. В таком случае для избавления от дубля необходимо прописать следующий редирект:

    RewriteRule ^(.*)category/page.html$ http://site.ru/page.html

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

    RewriteRule ^(.*)old-page.html$ http://site.ru/new-page.html

    Если приведенный выше код редиректа не сработает, попробуйте следующий:

    RewriteRule ^old-page.html$ http://site.ru/new-page.html

    Или такой:

    RewriteRule ^old-page.html$ /new-page.html

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

    RewriteRule ^старый-урл.html /new-page.html

    Как вы понимаете, выше мы рассматривали редиректы с одного URL на другой в пределах одного сайта . Для этого мы использовали mod_rewrite и директиву RewriteRule. Но можно обойтись и более простым вариантом записи редиректа при помощи директивы Redirect:

    Redirect 301 /old-page.html http://site.ru/new-page.html

    Оба варианта записи редиректа корректны и передают ссылочный вес и другие показатели. Они отличаются лишь тем, что используют директивы разных модулей, и поэтому имеют различный синтаксис. При использовании директивы Redirect сначала прописывается старый адрес страницы без http://site.ru, а затем новый адрес полностью.

    301 редирект может вам понадобиться при переезде сайта со старого домена на новый :

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

    Аналогичный редирект с использованием директивы Redirect:

    Redirect 301 / http://new-domen.ru

    Можно прописать 301 редирект URL с параметром на любую другую страницу сайта , к примеру, главную:

    RewriteCond %{QUERY_STRING} ^cPath=373_703 RewriteRule ^index\.php$ http://site.ru/?

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

    Редирект с site.ru/index.php на site.ru (избавляемся от дубля главной страницы):

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

    В результате наличия у главной страницы сайта дубля вида site.ru/index.php аналогичные дубли могут появляться и у внутренних страниц сайта, к примеру, site.ru/index.php/page.html является дублем страницы site.ru/page.html. В данном случае все дубли такого вида разом можно устранить при помощи редиректа:

    RewriteRule ^index\.php/(.*)$ /$1

    Если у главной страницы вашего сайта есть дубль вида site.ru/main.html , то следует прописать следующий редирект:

    RewriteEngine On RewriteCond %{THE_REQUEST} ^{3,9}\ /main\.html\ HTTP/ RewriteRule ^main\.html$ http://vash-sait.ru/

    или же такой вариант:

    Redirect 301 /main.html http://site.ru/

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

    RewriteCond %{REQUEST_URI} (.*/[^/.]+)($|\?) RewriteRule .* %1.html RewriteRule ^(.*)/$ /$1.html

    Если же наоборот вы хотите, чтобы все внутренние страницы сайта имели адрес без.html на конце , то есть адрес вида site.ru/page, то следует прописать редирект:

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

    Если стоит задача редиректа с URL-адресов с.htm на конце на адреса с.html на конце , то в.htaccess следует добавить следующую запись:

    RewriteBase / RewriteRule ^(.*)\.htm$ $1.html

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

    RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_URI} !\..+$ RewriteCond %{REQUEST_URI} !/$ RewriteRule (.*) http://www.site.ru/$1/

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

    RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} ^(.+)/$ RewriteRule ^(.+)/$ /$1

    Чтобы прописать редирект с URL-адреса с параметром вида http://site.ru/?page_id=111, добавьте в.htaccess следующее:

    RewriteCond %{QUERY_STRING} page_id=111 RewriteRule ^ http://site.ru/new-page/

    Также совсем недавно столкнулся с сайтом, для которого был получен сертификат о его безопасности, и было необходимо прописать редирект с http на https :

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

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

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

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

    Чтобы окончательно убедиться в том, что 301 редирект настроен верно, рекомендую также проверить ответ сервера при помощи специальных сервисов, к примеру, 2ip.ru , а еще лучше воспользуйтесь программой Netpeak Spider, при помощи которой можно узнать еще и много другой информации о сайте. Ответ сервера должен быть «301 » или же «301 MovedPermanently -> 200 OK».

    Надеюсь, теперь Вы поняли, как правильно настраивать 301 редирект. Выше я привел достаточное количество различных примеров. Если не сработает один тип записи редиректа, скорее всего сработает другой. Пробуйте. От чего зависит, какая именно запись редиректа сработает, точно сказать не могу, так как не являюсь программистом. Возможно, от CMS или настроек сервера. Также иногда влияет расположение кода редиректа в файле.htaccess. Если редирект не срабатывает, попробуйте перенести его код чуть выше по файлу. На этом у меня все. Успехов в оптимизации сайтов!