Постраничный редирект 301. редирект со страницы на страницу, на новый адрес

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

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

301-й редирект

301 Permanent Redirect (постоянный) позволяет перенаправить пользователей и поисковых роботов с одного урла вашего сайта на другой. В каких случаях он применяется чаще всего?

  • Настроить зеркала: редирект с www на без www;
  • Если ваш сайт переезжает с одного домена на другой;
  • При смене CMS (системы управления контентом);
  • Если контент страницы устарел, но вам нужно сохранить ее вес;
  • При смене урлов на ;
  • Как один из вариантов (отличается от rel=canonical тем, что последний оставляет дополнительные урлы рабочими, но основной вес передает одной канонической странице);
  • При любой необходимости перенаправить посетителя с одной страницы на другую.

При этом 301-й редирект на 90-99% переносит все свойства старой страницы на новый адрес. Т.е. фактически он склеивает два урла. Для новой страницы сохраняется ТИЦ, PR, ссылочный вес старой.

Разберем, как установить 301 редирект для сайтов на WordPress.

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

Для CMS WordPress существует несколько вариантов настройки 301 редиректа. В сегодняшней статье рассмотрим два из них:

  • С помощью файла.htaccess;
  • С помощью плагина.

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

Настройка редиректа с помощью.htaccess

Для внесения изменений в код для данных целей существует ряд директив:

  • Redirect 301 или RedirectPermanent – перенаправляет конкретные страницы, т.е. в данном случае нужно прописывать правило для каждой страницы отдельно. Например, команда

Redirect 301 /oldpage.html https://site.ru/newpage.html перенаправляет со старой страницы на новую

  • RedirectMatch – задает редирект с возможностью использовать регулярные выражения. Например, можно задать новые расширения урлов:

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

  • RewriteRule – используют чаще других, задает правила перенаправления.

Разберем смысл некоторых спецсимволов:

  • . – любой символ;
  • * — 0 и больше символов;
  • $ — конец строки;
  • ^ — начало строки;
  • () – переменная.

И теперь перейдем к рассмотрению примеров 301 редиректов через htaccess.

301 редирект с одного домена на другой

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

1 2 3 4 5 RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.old-site\.ru$ RewriteRule ^(.*)$ https://new-site.ru/$1 RewriteCond %{HTTP_HOST} ^old-site\.ru$ RewriteRule ^(.*)$ https://new-site.ru/$1

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

При этом в robots.txt старого ресурса нужно прописать:

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

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

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

Если вы не знаете, как прописать код для вашего конкретного случая, можно воспользоваться генераторами 301 редиректов. Например, webconfs.com/htaccess-redirect-generator.php .

Создание перенаправлений с помощью плагина

Разберем, как прописать 301 редиректы в WordPress с помощью плагина Redirection.

  • Для начала находим и .
  • После активации плагина Redirection, переходим в панель управления «Настройки» — «Redirection».
  • В Source URL прописываем старый адрес страницы, в Target URL – новый, на который будет происходить перенаправление.
  • В Regular expression нужно поставить галочку и нажимаем Add Redirection.
  • Редирект 301 для данной страницы настроен.

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

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

    P.S. Смотрим новые акрофотки с Марсового поля:


    С 301-ым редиректом (переадресацией) вы обязательно столкнетесь при склейке зеркал сайта с префиксом WWW и без него, в случае переезда сайта на новый домен, с HTTP на HTTPS, переноса страницы в другой раздел сайта и изменения ее адреса. Во всех этих случаях важно сохранить позиции и трафик, перенаправляя его на новые страницы. Как это сделать? Предлагаем техническую инструкцию.

    Код состояния HTTP 301 (Moved Permanently или 301 редирект) - это стандартный , который сообщает, что запрашиваемый ресурс перемещен и получил новый URL.

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

    Настроить 301-й редирект можно разными способами (с помощью HTML, PHP, плагинов для CMS, скриптов), но самый надежный и простой вариант - с помощью.htaccess (для Apache) или web.config (для IIS).

    Настройка 301 редиректа в.htaccess

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

    Если в корневой папке вашего сайта нет файла.htaccess, его нужно создать и загрузить с помощью FTP-клиента. Теперь можно приступать к настройке.

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

    Redirect permanent / http://newsite.ru/

    Redirect 301 / http://newsite.ru/

    Приведем еще примеры настройки переадресации 301.

    Редирект со страницы page1.html на страницу page2.html :

    Redirect 301 /page1.html site.ru/page2.html

    Редирект с главной страницы сайта на страницу каталога /cat :

    Redirect 301 / site.ru/cat

    Редирект с каталога /cat на главную :

    Redirect 301 /cat site.ru

    Редирект часто используют для склеивания зеркал. В этом случае применяется модуль mod_rewrite. Например, если вы хотите, чтобы шел редирект , то пропишите такие строки (где yoursite.ru - ваш домен):

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

    И наоборот - редирект с домена без www на домен с www :

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

    Редирект всех страниц сайта при :

    RewriteEngine On
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI}

    Если не сработает, можно попробовать такой вариант:

    RewriteEngine On
    RewriteCond %{HTTPS} =off
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}

    Также 301 редирект используется в борьбе с дублями страниц. Приведем несколько примеров.
    Для поисковых систем URL http://www.yoursite.ru/ и http://www.yoursite.ru являются разными. Поэтому надо решить, какой тип использовать: со слешем в конце или без него. Для того чтобы убрать слеш в конце URL , пропишите правило:

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

    Добавить слеш можно таким образом:

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

    Для того чтобы заменить все.htm файлы.html файлами , пропишите следующие строки:

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

    Если вы прописываете несколько директив, то строка «RewriteEngine on » указывается один раз - с ее помощью включается модуль mod_rewrite .

    Если вы создаете файл.htaccess с нуля, то все команды указываются внутри таких строк:



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

    Настройка редиректа в web.config

    Вариант редиректа с помощью.htaccess работает только для Apache. Для веб-сервера IIS настраивать переадресацию нужно в файле web.config . Например, редирект с одной страницы (yoursite.ru/page.html) на другую (yoursite.ru/page2.html) будет выглядеть так:








    301 редирект с домена с www на домен без www настроить можно таким образом:















    Альтернативные способы настройки переадресации

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

    Синтаксис следующий:

    В этом случае происходит принудительная передача кода HTTP-ответа 301, и пользователь перенаправляется на страницу http://newsite.ru/.

    Если у вас небольшой сайт с парой страниц, то редирект можно сделать с помощью HTML:

    Изменяя цифру 0 , вы задаете количество секунд до переадресации. В этом случае редирект реализуется не на стороне сервера, а на стороне клиента (не передается заголовок 301).

    Также редирект можно сделать с помощью JavaScript:


    window.location.replace("newsite.ru");

    В этом случае также не передается заголовок 301. И если у пользователя в браузере отключена поддержка JavaScript, то редирект не сработает.

    Вариантов редиректов бесчисленное множество. Упростить работу можно с помощью генераторов редиректов. Это онлайн-сервисы, которые выдают готовые коды, - вам нужно лишь указать, откуда и куда перенаправить пользователя. Вот некоторые из этих сервисов: www.webconfs.com , www.rapidtables.com , www.htaccessredirect.net .

    Как настроить редирект, если нет опыта веб-программирования?

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

    Другой вариант - для популярных CMS. Так, для WordPress есть плагины Redirection, Safe Redirect Manager, Simple 301 Redirects, а в Joomla! и есть встроенные инструменты редиректа.

    Не уверены, что сможете правильно настроить редиректы своими руками? Лучше не рисковать - в системы PromoPult за вас все сделают профессиональные вебмастера.

    Заключение

    Лучший способ настроить 301 редирект - с помощью.htaccess. Но он подходит только для веб-серверов Apache. Для IIS придется настраивать web.config. Если же нужно не просто сделать редирект, а учесть определенные условия, то используйте PHP, но в этом случае без помощи программиста не обойтись.

    Есть и другие способы (в частности, с помощью HTML и JavaScript), но это не 301 редирект, а просто перенаправление без передачи веса. Также можно использовать плагины для популярных CMS или подключить услугу web-форвардинга, если ее оказывает ваш хостинг-провайдер.

    Редирект 301 - зачем он нужен? В процессе продвижения сайта может возникнуть ситуация, когда необходимо изменить url страницы. Причины тому могут быть разные: переезд на новый домен, склейка дублей страниц, или даже, не к ночи будут помянуты, санкции поисковых систем. Чтобы изменить url, используется перенаправление, правильно называющееся «301 Permanent Redirect».

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

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

    Избавление от дублей страниц также называют канонизацией.

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

    При использовании некоторых CMS (систем управления контентом, или «движков» сайта) редирект можно настроить при помощи специальных плагинов. Однако более распространена практика настройки 301 редиректа посредством внесения изменений в файл.htaссess.

    Несколько примеров использования 301 редиректа Cклеивания зеркал сайта

    Для поисковой системы site.name и www.site.name – разные сайты. Один из них будет проиндексирован, второй же окажется дублем. Чтобы подобного не произошло, делают так называемое «склеивание» сайта. С сайта с «www» указывается перенаправление на сайт без «www». Это делается в файле.htaccess, с помощью следующей конструкции:

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

    Если на начальном этапе этого не было сделано, и в индекс попала версия сайта с «www», стоит сделать обратное перенаправление.

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

    Перенаправление на страницу с другим url

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

    RewriteEngine On RewriteRule ^(.*)url.html$ http://vash-sait.ru/new-url.html

    Перенаправление на другой домен

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

    RewriteEngine on RewriteCond %{HTTP_HOST} ^www\.staryy-sait\.ru$ RewriteRule ^(.*)$ http://novyy-sait.ru/$1 RewriteCond %{HTTP_HOST} ^staryy-sait\.ru$ RewriteRule ^(.*)$ http://novyy-sait.ru/$1

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

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

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

    Убираем расширение с помощью 301 редиректа

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

    Перенаправление с index.php на главную

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

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

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

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

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

    Если исходный адрес содержит какой-либо параметр (например, http://vash-sait.ru/articles.php?section=1. Параметр здесь "section=1"), то перенаправляющая конструкция будет иметь следующий вид:

    RewriteEngine On RewriteCond %{QUERY_STRING} section=1 RewriteRule ^index.php http://vash-sait.ru/articles.php?

    Код ответа 301 (Moved Permanently) означает, что запрошенный документ теперь доступен по новому адресу на постоянной основе. Редирект 301 может понадобиться в нескольких случаях: переезд на новый домен, изменение адреса страницы или . Цели этих мероприятий вполне прозрачны:

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

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

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

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

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

    Также его можно использовать для борьбы с дублями страниц. В общем нужно писать книгу на тему «99 способов использование Redirect 301». Вот его синтаксис:

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

    Ну или так, результат будет один и тот же:

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

    Поясняю: /old-page.html - относительный адрес старой страницы. Он может быть вложенным: /old-category/old-page.html, ну или таким: /old-category/old-page/ - тут никаких ограничений нет. Тоже самое относится к http://new-domain.ru/new-page.html (новой странице), с той лишь разницей, что путь тут абсолютный (не обязательно, чтобы это был новый домен - может быть просто новый внутренний адрес страницы).

    Настройка 301 редиректа при переносе сайта на новый домен

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

    Options +FollowSymLinks
    RewriteEngine on

    RewriteEngine off

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

    В данном примере мы установили редирект всех страниц старого домена на страницы нового (при условии, что их относительные адреса совпадают). При этом мы оставили без редиректа на старом домене файл robots.txt, чтобы процесс переноса был более полноценным. В него мы прописываем:

    User-agent: *
    Disallow:
    Host: newsite.ru
    Sitemap: http://newsite.ru/sitemap.xml

    Ну и ждём пару месяцев, пока переезд домена не будет зачтен, а все характеристики - переданы.

    Склейка зеркал сайта: 301 редирект c www на без www и наоборот

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

    Эти дубли мешают индексации сайта и продвижению в целом, так как, во-первых, это банальные дубли страниц (уж извиняюсь за повторение) и, во-вторых, входящие ссылки будут также укладываться в разные корзины. Тоже самое касается и дублей главной страницы: site.ru, site.ru/index.html, site.ru/index.php и т.д. По этой причине еще на этапе создания сайта желательно позаботиться об этом вопросе и одну из версий сайта (например, c www) переадресовать на другую (например, без www). Если момент был упущен, то тут нет ничего страшного.

    Рассмотрим процесс склейки зеркал с помощью 301 редиректа поэтапно.

    1. Определяем основной домен, выбранный для индексации поисковыми системами.

    Основное зеркало можно легко определить по результатам поисковой выдачи Яндекс и . Вводим название домена и смотрим, какой адрес отобразится: www.site.ru или site.ru. Если же сайт еще не проиндексирован, то выбираем его по своему усмотрению. Если в Google и Yandex основные домены разные, то лучше оставьте Яндексовский.

    2. Прописываем 301 редирект в.htaccess.

    Находим в корне FTP сайта файл.htaccess, скачиваем и открываем в блокноте, а затем вносим в него необходимые изменения. Первый вариант - 301 редирект домена без www на с www:

    Options +FollowSymLinks
    RewriteEngine On

    RewriteEngine off

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

    Обратная ситуация - с www на без www:

    Options +FollowSymLinks
    RewriteEngine On

    RewriteEngine off

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

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

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


    RewriteRule ^index\.html$ http://www.site.ru/

    RewriteRule ^index\.php$ http://www.site.ru/

    Ну и, опять же, если у вас site.ru:

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

    3. Настройка robots.txt

    Увидели знакомую директиву, оставляющей robots.txt нетронутым? Все верно, вносим изменение в robots.txt:

    Host: основное-зеркало.ru

    4. Проверяем работу сайта.

    Вводим тот адрес, который с которого мы проставляли редирект, например www.site.ru или site.ru/index.html и если при заходе на него происходит переход на site.ru, то всё настроено правильно.

    5. Настройка Yandex и Google вебмастер.

    Дополнительно применяем соответствующие настройки в личных . В случае с Yandex:

    Ну и для Google:

    На этом вроде всё. Удачи вам и если появятся вопросы, то пишите в комментариях.

    Далеко не все начинающие веб-мастера знают что такое «редирект 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/любое_слово

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

    Интернет