Домой / Уроки по Windows / Проиндексируется ли страница с 301 редиректом. Редирект при смене расширение файлов

Проиндексируется ли страница с 301 редиректом. Редирект при смене расширение файлов

Редирект 301 или 301 Permanent Redirect — это правило, которое автоматически переадресовывает пользователя на другой адрес страницы. С его помощью вы можете склеить старые страницы с новыми или перенести сайт на другой домен, убрать многие дубли с сайта и многое другое. Крайне полезная вещь — поэтому нужно научиться делать его правильно!

Так же при 301 редиректе происходит склейка тИЦ (читаем ) и PR — т.е. вы можете сохранить старое значение на новом адресе. Вы можете нисколько не потерять в глазах поисковых систем. Давайте перейдем от теории к практике.

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

Файл под названием.htaccess находится в главной категории вашего сайта. Это служебный файл, в котором мы будем указывать правила склейки. Открываем файл блокнотом (рекомендую notepad++ , чтобы не было проблем с кодировкой). Не забывайте, что это один из важных пунктов в .

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

Options +FollowSymLinks RewriteEngine On #Здесь указываем правила

Все правила записываются в виде:

RewriteCond [Сравнение] [Условие] [Флаги] RewriteCond [Сравнение] [Условие] [Флаги] RewriteRule [Шаблон] [Подстановка] [Флаги]

Теперь непосредственно займемся переадресацией и разберем конкретные примеры.

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

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

Редирект с index.php на главную

Чтобы настроить его вам нужно прописать в вашем файле следующий код, который будет перенаправлять посетителей с адреса site.ru/index.php на site.ru:

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

Если вам так же нужно сделать переадресацию с index.html, то просто в коде выше замените .php на .html

Склеиваем алиасы сайта

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

RewriteCond %{HTTP_HOST} ^vash-sait.com$ RewriteCond %{HTTP_HOST} ^www.vash-sait.com$ RewriteCond %{REQUEST_URI} !^/robots.* RewriteRule ^(.*)$ http://vash-sait.ru/$1

Обратите внимание на первые 2 строки, там указано зеркало в зоне.com, если у вас иная или несколько зон, то добавляем правила.

Редирект с www на без www

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

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

Редирект с домена без www на домен с www

Это действие противоположное предыдущему, только основное зеркало здесь www.site.ru:

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

301 редирект страниц со слэшем и без

Это еще один вид дублей, тут мы склеим страницы site.ru/category/ и site.ru/category, как видите, в конце второго урла не стоит слэша:

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

Если вам нужно наоборот оставить слэш в конце урла, то вам нужен данный вариант:

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

Если у вас по какой-то причине появились урлы типа site.ru/category//article.html, то юзаем код:

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

где, «//» можно заменить на «—» или любые сдвоенные символы в урле.

Массовая замена категории

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

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

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

Редирект на новую страницу

Самый простой редирект со страницы на страницу, для это просто пропишите так:

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

Где old-post.html — это ваша старая страница, а new-site.ru/new-post.html — это новая страница и она может быть на любом домене (включая ваш текущий домен).

Редирект для url с параметрами

Страницы с параметрами редиректятся сложнее, возьмем пример http://site.ru/page.php?sort=articles. Параметр здесь «sort=articles». Код будет следующим:

RewriteCond %{QUERY_STRING} sort=articles RewriteRule .* http://site.ru/page.php?

Работаем с расширениями

Убираем.html из url (для удаления.php не забудьте заменить $1.html на $1.php):

RewriteRule ^(([^/]+/)*[^.]+)$ /$1.html [L]

Меняем.php на.html в урлах и наоборот (не забываем поменять местами в коде):

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

Правильный 301 редирект на новый домен

Этот пункт я выделил отдельно, т.к. он больше связан с переносом на другой домен. Тут есть важный момент, это не упустить директиву по правке роботса — она указана на 3 строке кода.

RewriteCond %{REQUEST_FILENAME} robots.txt$ RewriteRule ^([^/]+) $1 [L] RewriteCond %{HTTP_HOST} ^site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1 RewriteCond %{HTTP_HOST} ^www.site\.ru RewriteRule ^(.*)$ http://new-site.ru/$1

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

Если у вас появились какие-то вопросы, пишите в комментарии — будем разбираться 🙂

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

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

  1. при склеивании зеркал сайта с www и без www;
  2. при переезде сайта на новый домен;
  3. при переносе сайта на новую CMS;
  4. при изменении URL-адресов страниц;
  5. при устранении дублей страниц сайта.

Как ни странно, последний случай рассматривают крайне редко, хотя при устранении дублей 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. Если редирект не срабатывает, попробуйте перенести его код чуть выше по файлу. На этом у меня все. Успехов в оптимизации сайтов!

Здравствуйте, дорогие мои друзья! Сегодня я решил написать статью о «страшном» понятии как 301 редирект . Да, не пугайтесь так, на самом деле всё очень и очень просто:). В данной статье я Вам расскажу, что это такое, зачем он нужен, как его сделать и много другой не менее полезной информации по этой теме!

Новость №1

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

  1. Статья про ;
  2. Статья про инвестирование в .

В этих статьях я рассказал куда и сколько я инвестировал. Скоро узнаете ещё об одной не менее прибыльной брокерской компании, поэтому не пропустите выхода этой статьи! Доход в месяц от инвестирования в этой компании, а вернее в данной программе доверительного управления от 7-40%.

А теперь, давайте разберёмся, что такое redirect.

Редирект (redirect) — это переброс (перенаправление или переадресация) c одного доменного имени на другого (с одного сайта на другой), с одной страницы сайта на другую. Т.е. пользователь набирает в строке своего браузера одно название страницы или сайта, а попадает совсем на другое название страницы или сайта.

Зачем нужен 301 редирект вебмастерам?

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

1. Для склейки .

Помните, в прошлой статье я рассказывал о нежелательности иметь сайт с доменом www, так как это приводит перераспределению ссылочной массы на два домена и, как следствие, негативно влияет на ранжирование сайта в поисковиках;

2. При переходе сайта на новый домен. Бывает так, что сайт попадает под различные фильтры поисковых систем, поисковый трафик снижается (или вообще исчезает), поэтому возникает необходимость на новый домен. А как быть с постоянными читателями блога? Как быть с теми, кто сохранил ваш блог в закладках или подписался на ? Вот для этого и пригодится 301 редирект ;

3. Для повышения тИЦ и PR сайта, сохранения поискового трафика. Например, вы хотите повысить и ПР определённому сайту (основному). Для этого нужно купить с уже имеющимися хорошими пузомерками и сделать редирект на основной сайт, тогда тИЦ, ПР и поисковой трафик будет передаваться ему.

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

5. При переходе бесплатного хостинга на платный .

Также есть ещё ряд применений редиректу 301, но пока остановимся на вышесказанном.

Классификация redirect

Как я уже сказал, для общего развития, начинающему вебмастеру нужно знать, что кроме 301 редиректа существуют и другие:

Но наиболее часто используют 301 редирект.

Как сделать 301 redirect через файл.htaccess?

Возникает вопрос: а что же такое файл .htaccess ? Это файл, в котором будут хранится различные команды 301 редиректа (о переадресации страницы, домена и т.д.).

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

А теперь открываем файл (с помощью текстового редактора) и вписываем необходимый код редиректа.

Если вы хотите переправить посетителей одного сайта на другой

Redirect 301 / http://www.домен.com

Redirect 301 — указывает, на то, что сайт перемещён;

«/» — указывает, что всё с верхнего уровня блога будет перемещено (переадресовано) на новый домен.

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

Redirect 301 /старая-страница.html http://новый-домен.ru/новая-страница.html
или
Redirect permanent /старая-страница.html http://новый-домен.ru/новая-страница.html

RedirectPermanent /старая-страница.html http://новый-домен.ru/новая-страница.html

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

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

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

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

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

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

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

RewriteEngine on|off - это специальная директива, которая служит для отключения или включения доступа к коду файла.htaccess, доступ осуществляется через модуль хостинга mod_rewrite;

RewriteCond - это специальная директива, которая определяет условия для правил преобразований. Является директивой модуля хостинга mod_rewrite;

RewriteRule - это директива, которая отвечает за различные преобразования. В данном случае редирект 301.

Сначала информация о странице поступает в директиву RewriteCond, после чего эта информация преобразовывается в директиву RewriteRule. Вот так работает вышеприведённый код, если вкратце.

Да, информация сложная для понимания (поначалу), но если Вы её освоите, то в дальнейшем будет намного проще.

А на этом статью буду заканчивать, всем пока!

P.S.

С уважением,Александр Сергиенко

Здравствуйте, уважаемые друзья и гости блога сайт! Сейчас Вы узнаете как правильно делается на сайте 301 редирект htaccess и вообще, что такое редирект и зачем он нужен на ресурсе? Поехали …

301 редирект — это код статуса ресурса, который возникает на нем при переадресации на другой сайт и отправляется клиенту, т.е. браузеру.

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

Например при переходе сайта с http на https . Об этом я писал ранее! Вот как раз для перевода сайта на https необходимо прописать в файле htaccess код редиректа, который будет указывать поисковым машинам, что ваш сайт находится теперь по адресу начинающегося с HTTPS. Вот этот код:

  • RewriteCond %{SERVER_PORT} !^443$
    RewriteRule ^(.*)$ https://site.ru/$1

или можно вот так:

  • RewriteCond %{HTTPS} =on
    RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1

А вообще-то видов редиректов существует масса, вот некоторые из них, которые считаются наиболее важными и востребованными среди вебмастеров …

Виды 301 редиректов для вебмастера!

301 редирект с www на без www (главное зеркало – домен без www)

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

301 редирект с без www на www (главное зеркало – домен с www)

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

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

RewriteCond %{REQUEST_URI} ^/test/$
RewriteRule ^.*$ http://site.ru/new-test/?

Важно!

Для устранения ошибки на сайте (возникновение дублей главной страницы!), необходимо в файл htaccess вашего сайта установить следующий код:

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

Тогда главная страница вашего сайта не будет доступна по нескольким адресам, так например: home.php,index.php, default.php и др. Соответственно злополучные дубли вашей главной страницы исчезнут и сайт поднимется в поисковой выдаче из-за исчезновения данной ошибки.

Вот еще полезный сервис, который поможет Вам при создании анонимных редирект-ссылок для Вашего сайта: Katvin.com

Вот собственно и все, что я хотел Вам сегодня рассказать. Спасибо за Ваше внимание! До новых встреч!

Если вы хотите правильно настраивать 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:

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

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

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

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

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

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

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

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

— http://www.site.com/cat1/

— http://www.site.com/cat1

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

Для того чтобы удалить слэш в конце:

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

Редирект одной страницы на другую страницу:

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 /(.*) / old-catalog /$1

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

Если вы вдруг переехали на другую платформу или CMS и при этом у url-ов изменились только расширение, то в этой случае вам поможет вот такой редирект

RewriteCond %{HTTP_HOST} !^www\.site\.com 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

Как сделать редирект с любого урла на 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(); }

$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 редирект со старого сайта на новый.
— при этом для файла редирект не делаем, а прописываем в нем директиву 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 редирект. Смотри выше.