Главная Статьи 301 редирект – корректная переадресация через htaccess и php header

301 редирект – корректная переадресация через htaccess и php header

15.11.2017

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

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

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

  1. Простой редирект

    Redirect 301 / http://www.new.ru/index.html

    где:
    Redirect 301 - это инструкция, говорящая что страница перемещена
    / - означает, что все с верхнего уровня сайта, включая все подкаталоги, будет переадресовано
    http://www.new.ru/index.html - новая страница или сайт (не забывайте поставить последний "/", если переадресация идет на сайт).

    Чтобы переадресовать только страницу, сохранив PR старой страницы:

    Redirect 301 /old/old.html http://www.new.ru/new.html

    где:
    /old/old.html - путь и имя старой страницы

    Аналогичный синтаксис для переадресации сайта:

    RedirectPermanent / http://www.new.ru/

    Пример переадресации каталога:

    RedirectPermanent /old-directory http://www.new.ru/new-directory/

    Например, зашедших в test переадресуем на www.test.com, остальных на enter.test.com (порядок следования записей важен):

    Redirect permanent /test    http://www.test.com/
    Redirect permanent /        http://enter.test.com/
  2. Использование mod_rewrite

    Редирект на сайт с www:

    Options +FollowSymLinks
    RewriteEngine on
    RewriteCond %{HTTP_HOST} ^new\.ru
    RewriteRule ^(.*)$ http://www.new.ru/$1 [R=permanent,L]

    и без www:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^www.new\.ru$ [NC]
    RewriteRule ^(.*)$ http://new.ru/$1 [R=301,L]

    Обозначение [R=301,L] означает: перенаправить клиента и отправить ему код статуса 301 (R=301) и сделать это правило последним (L).

    Редирект старого домена на новый без www:

    Options +FollowSymLinks
    RewriteEngine On
    RewriteCond %{HTTP_HOST} !^new\.ru$ [NC]
    RewriteRule ^(.*)$ http://new.ru/$1 [R=301,L]

    Для переадресации с new.htm на new.html:

    RewriteEngine   on
    RewriteBase     /
    RewriteRule     ^new\.htm$  new.html [R=permanent]

    Для замены всех .htm файлов на .html:

    RewriteEngine  on
    RewriteBase     /
    RewriteRule     ^(.*)\.htm$  $1.html [R=permanent]
  3. Редирект на PHP

    <?php
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://new.ru');
    die();
    ?>

    До вызова header() ничего не должно выводиться (например, echo или print). Поэтому этот код лучше ставить в начало php-скрипта.

Наверх