301 Permanent Redirect

24.11.2010

301 Permanent Redirect використовується у кількох випадках: при зміні домену, при перенесенні сторінки сайту, для склеювання імені сайту з www та без нього. Це важливо для передачі Page Rank (PR) та збереження пошукового трафіку.

301 редирект це найкращий метод збереження ваших позицій у пошукових системах, коли ви переносите сторінку чи сайт. Код "301" інтерпретується як постійне переміщення ("moved permanently").

  • Простий редирект (у файлі .htaccess або httpd.conf для Apache):

    Redirect 301 / http://www.you.com/new.htm
    де:

    Redirect 301 - це інструкція, що говорить, що сторінку переміщено
    / - означає, що все з верхнього рівня сайту, включаючи всі підкаталоги, буде переадресовано
    http://www.you.com/new.htm - нова сторінка або сайт (не забувайте поставити останній "/", якщо переадресація йде на сайт).

    Щоб переадресувати лише сторінку, зберігши PR старої сторінки:

    Redirect 301 /old/old.htm http://www.you.com/new.htm
    де:
    /old/old.htm - шлях та ім'я старої сторінки

    Аналогічний синтаксис для переадресації сайту:
    RedirectPermanent / http://www.you.com/

    Приклад переадресації каталогу:
    RedirectPermanent /old-directory http://www.domain.com/new-directory/

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

    Redirect permanent /test http://www.test.com/
    Redirect permanent / http://enter.test.com/

    Примітка: для моїх цілей (зміна домену) вистачило першого варіанта простого 301 редиректу.

  • Використання mod_rewrite (прописується у файлі .htaccess):

    Стало класичним завдання злиття імена сайту з www і без нього, вирішується так:

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

    або альтернативний синтаксис:

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

    Позначення [R=301,L] означає: перенаправити клієнта та надіслати йому код статусу 301 (R=301) і зробити це правило останнім (L).

    Редирект старого домену на новий:

    Options +FollowSymLinks
    RewriteEngine on
    RewriteRule (.*) http://www.newdomain.com/$1 [R=301,L]

    Наприклад, якщо необхідно, щоб замість rewrite.htm завантажувався файл rewrite.html, додайте в .htaccess:

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

    Для заміни всіх .htm файлів .html файлами:

    RewriteEngine on
    RewriteBase /
    RewriteRule ^(.*)\.htm$ $1.html [R=permanent]

  • Редирект на PHP:

    <?php
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://www.newdomain.ru/newdir/newpage.htm');
    exit();
    ?>

    Краще вказати HTTP/1.1, оскільки старіші не підтримують віртуальний хостинг. Не забудьте, що до виклику header нічого не повинно виводитися (наприклад, echo або print). Тому цей код краще ставити на початок php-скрипту. Більш повний варіант php редиректа зі збереженням сторінки, що передається, і параметрів виклику:

    <?php
    $ref=$_SERVER['QUERY_STRING'];
    if ($ref) $ref='?'.$ref;
    header('HTTP/1.1 301 Moved Permanently');
    header('Location: http://newdomain.com/'.$ref);
    exit();
    ?>

Останнє в нашому блозі

Інтернет маркетинг
04.11.2019